123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- /*
- * Copyright 2017 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
- #include "include/core/SkPromiseImageTexture.h"
- #include "src/core/SkMessageBus.h"
- #if SK_SUPPORT_GPU
- std::atomic<uint32_t> SkPromiseImageTexture::gUniqueID{1};
- SkPromiseImageTexture::SkPromiseImageTexture(const GrBackendTexture& backendTexture) {
- SkASSERT(backendTexture.isValid());
- fBackendTexture = backendTexture;
- fUniqueID = gUniqueID++;
- }
- SkPromiseImageTexture::~SkPromiseImageTexture() {
- for (const auto& msg : fMessages) {
- SkMessageBus<GrUniqueKeyInvalidatedMessage>::Post(msg);
- }
- }
- void SkPromiseImageTexture::addKeyToInvalidate(uint32_t contextID, const GrUniqueKey& key) {
- SkASSERT(contextID != SK_InvalidUniqueID);
- SkASSERT(key.isValid());
- for (const auto& msg : fMessages) {
- if (msg.contextID() == contextID && msg.key() == key) {
- return;
- }
- }
- fMessages.emplace_back(key, contextID);
- }
- #if GR_TEST_UTILS
- SkTArray<GrUniqueKey> SkPromiseImageTexture::testingOnly_uniqueKeysToInvalidate() const {
- SkTArray<GrUniqueKey> results;
- for (const auto& msg : fMessages) {
- results.push_back(msg.key());
- }
- return results;
- }
- #endif
- #endif
|