/* * Copyright 2019 Google LLC * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef skgpu_AsyncReadTypes_DEFINED #define skgpu_AsyncReadTypes_DEFINED #include "include/core/SkData.h" #include "include/core/SkImage.h" #include "include/core/SkRefCnt.h" #include "include/core/SkSize.h" #include "include/private/base/SkAssert.h" #include "include/private/base/SkDebug.h" #include "include/private/base/SkTArray.h" #include "src/core/SkMessageBus.h" #include <cstddef> #include <forward_list> #include <utility> namespace skgpu { /** * We sometimes hand clients objects that contain mapped buffers. The client may consume * the mapped buffer on another thread. This object manages receiving messages that buffers are * ready to be unmapped (on the owner's thread). It also handles cleaning up mapped * buffers if the owner is destroyed before the client has finished with the buffer. * * Buffers are first registered using insert() before being passed the client. process() should be * called periodically on the owner's thread to poll for messages and process them. */ template <typename T, typename IDType> class TClientMappedBufferManager { … }; //////////////////////////////////////////////////////////////////////////////// template <typename T, typename IDType, typename TransferResultType> class TAsyncReadResult : public SkImage::AsyncReadResult { … }; } // namespace skgpu #endif // skgpu_AsyncReadTypes_DEFINED