diff options
Diffstat (limited to 'services/surfaceflinger/ClientCache.h')
-rw-r--r-- | services/surfaceflinger/ClientCache.h | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/services/surfaceflinger/ClientCache.h b/services/surfaceflinger/ClientCache.h index d7af7c0e97..a9b8177d70 100644 --- a/services/surfaceflinger/ClientCache.h +++ b/services/surfaceflinger/ClientCache.h @@ -19,6 +19,7 @@ #include <android-base/thread_annotations.h> #include <binder/IBinder.h> #include <gui/LayerState.h> +#include <renderengine/RenderEngine.h> #include <ui/GraphicBuffer.h> #include <utils/RefBase.h> #include <utils/Singleton.h> @@ -39,7 +40,11 @@ public: bool add(const client_cache_t& cacheId, const sp<GraphicBuffer>& buffer); void erase(const client_cache_t& cacheId); - sp<GraphicBuffer> get(const client_cache_t& cacheId); + std::shared_ptr<renderengine::ExternalTexture> get(const client_cache_t& cacheId); + + // Always called immediately after setup. Will be set to non-null, and then should never be + // called again. + void setRenderEngine(renderengine::RenderEngine* renderEngine) { mRenderEngine = renderEngine; } void removeProcess(const wp<IBinder>& processToken); @@ -53,11 +58,13 @@ public: void unregisterErasedRecipient(const client_cache_t& cacheId, const wp<ErasedRecipient>& recipient); + void dump(std::string& result); + private: std::mutex mMutex; struct ClientCacheBuffer { - sp<GraphicBuffer> buffer; + std::shared_ptr<renderengine::ExternalTexture> buffer; std::set<wp<ErasedRecipient>> recipients; }; std::map<wp<IBinder> /*caching process*/, @@ -71,6 +78,7 @@ private: }; sp<CacheDeathRecipient> mDeathRecipient; + renderengine::RenderEngine* mRenderEngine = nullptr; bool getBuffer(const client_cache_t& cacheId, ClientCacheBuffer** outClientCacheBuffer) REQUIRES(mMutex); |