• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2025 Google LLC
3  *
4  * Use of this source code is governed by a BSD-style license that can be
5  * found in the LICENSE file.
6  */
7 
8 #include "tools/graphite/precompile/PipelineCallbackHandler.h"
9 
10 namespace skiatools::graphite {
11 
add(sk_sp<SkData> payload)12 void PipelineCallBackHandler::add(sk_sp<SkData> payload) {
13     SkAutoSpinlock lock{ fSpinLock };
14 
15     const sk_sp<SkData>* data = fMap.find({ payload.get() });
16     if (!data) {
17         fMap.set(std::move(payload));
18     }
19 }
20 
retrieve(std::vector<sk_sp<SkData>> * result)21 void PipelineCallBackHandler::retrieve(
22         std::vector<sk_sp<SkData>>* result) {
23     SkAutoSpinlock lock{ fSpinLock };
24 
25     result->reserve(fMap.count());
26 
27     fMap.foreach([result](sk_sp<SkData>* data) {
28         result->push_back(*data);
29     });
30 }
31 
reset()32 void PipelineCallBackHandler::reset() {
33     SkAutoSpinlock lock{ fSpinLock };
34 
35     fMap.reset();
36 }
37 
38 }  // namespace skiatools::graphite
39