From 2a9fc493dfdba67108e4335bb1fe931bc1e2a025 Mon Sep 17 00:00:00 2001 From: Mathias Agopian Date: Fri, 1 Mar 2013 13:42:57 -0800 Subject: rework screenshot API and implementation - SurfaceFlinger now supports to take a screenshot directly into an IGraphicBufferProducer - reimplement the IMemoryHeap screenshot on top of the above - reimplement LayerScreenshot such that its BufferQueue is directly used as the destination of the screenshot. LayerScreenshot is now a thin wrapper around Layer Bug: 6940974 Change-Id: I69a2096b44b91acbb99eba16f83a9c78d94e0d10 --- include/gui/ISurfaceComposer.h | 9 +++++++-- include/gui/SurfaceComposerClient.h | 9 +++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) (limited to 'include/gui') diff --git a/include/gui/ISurfaceComposer.h b/include/gui/ISurfaceComposer.h index 4862949..08eddcb 100644 --- a/include/gui/ISurfaceComposer.h +++ b/include/gui/ISurfaceComposer.h @@ -103,7 +103,6 @@ public: uint32_t reqWidth, uint32_t reqHeight, uint32_t minLayerZ, uint32_t maxLayerZ) = 0; - /* triggers screen off and waits for it to complete */ virtual void blank(const sp& display) = 0; @@ -113,6 +112,11 @@ public: /* returns information about a display * intended to be used to get information about built-in displays */ virtual status_t getDisplayInfo(const sp& display, DisplayInfo* info) = 0; + + virtual status_t captureScreen(const sp& display, + const sp& producer, + uint32_t reqWidth, uint32_t reqHeight, + uint32_t minLayerZ, uint32_t maxLayerZ) = 0; }; // ---------------------------------------------------------------------------- @@ -130,11 +134,12 @@ public: GET_BUILT_IN_DISPLAY, SET_TRANSACTION_STATE, AUTHENTICATE_SURFACE, - CAPTURE_SCREEN, + CAPTURE_SCREEN_DEPRECATED, BLANK, UNBLANK, GET_DISPLAY_INFO, CONNECT_DISPLAY, + CAPTURE_SCREEN, }; virtual status_t onTransact(uint32_t code, const Parcel& data, diff --git a/include/gui/SurfaceComposerClient.h b/include/gui/SurfaceComposerClient.h index 9e4d6fc..38c931d 100644 --- a/include/gui/SurfaceComposerClient.h +++ b/include/gui/SurfaceComposerClient.h @@ -156,10 +156,19 @@ private: class ScreenshotClient { +public: + static status_t capture( + const sp& display, + const sp& producer, + uint32_t reqWidth, uint32_t reqHeight, + uint32_t minLayerZ, uint32_t maxLayerZ); + +private: sp mHeap; uint32_t mWidth; uint32_t mHeight; PixelFormat mFormat; + public: ScreenshotClient(); -- cgit v1.1