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)12void 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)21void 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()32void PipelineCallBackHandler::reset() { 33 SkAutoSpinlock lock{ fSpinLock }; 34 35 fMap.reset(); 36 } 37 38 } // namespace skiatools::graphite 39