Loading include/gui/ISurfaceComposer.h +7 −2 Original line number Original line Diff line number Diff line Loading @@ -103,7 +103,6 @@ public: uint32_t reqWidth, uint32_t reqHeight, uint32_t reqWidth, uint32_t reqHeight, uint32_t minLayerZ, uint32_t maxLayerZ) = 0; uint32_t minLayerZ, uint32_t maxLayerZ) = 0; /* triggers screen off and waits for it to complete */ /* triggers screen off and waits for it to complete */ virtual void blank(const sp<IBinder>& display) = 0; virtual void blank(const sp<IBinder>& display) = 0; Loading @@ -113,6 +112,11 @@ public: /* returns information about a display /* returns information about a display * intended to be used to get information about built-in displays */ * intended to be used to get information about built-in displays */ virtual status_t getDisplayInfo(const sp<IBinder>& display, DisplayInfo* info) = 0; virtual status_t getDisplayInfo(const sp<IBinder>& display, DisplayInfo* info) = 0; virtual status_t captureScreen(const sp<IBinder>& display, const sp<IGraphicBufferProducer>& producer, uint32_t reqWidth, uint32_t reqHeight, uint32_t minLayerZ, uint32_t maxLayerZ) = 0; }; }; // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- Loading @@ -130,11 +134,12 @@ public: GET_BUILT_IN_DISPLAY, GET_BUILT_IN_DISPLAY, SET_TRANSACTION_STATE, SET_TRANSACTION_STATE, AUTHENTICATE_SURFACE, AUTHENTICATE_SURFACE, CAPTURE_SCREEN, CAPTURE_SCREEN_DEPRECATED, BLANK, BLANK, UNBLANK, UNBLANK, GET_DISPLAY_INFO, GET_DISPLAY_INFO, CONNECT_DISPLAY, CONNECT_DISPLAY, CAPTURE_SCREEN, }; }; virtual status_t onTransact(uint32_t code, const Parcel& data, virtual status_t onTransact(uint32_t code, const Parcel& data, Loading include/gui/SurfaceComposerClient.h +9 −0 Original line number Original line Diff line number Diff line Loading @@ -156,10 +156,19 @@ private: class ScreenshotClient class ScreenshotClient { { public: static status_t capture( const sp<IBinder>& display, const sp<IGraphicBufferProducer>& producer, uint32_t reqWidth, uint32_t reqHeight, uint32_t minLayerZ, uint32_t maxLayerZ); private: sp<IMemoryHeap> mHeap; sp<IMemoryHeap> mHeap; uint32_t mWidth; uint32_t mWidth; uint32_t mHeight; uint32_t mHeight; PixelFormat mFormat; PixelFormat mFormat; public: public: ScreenshotClient(); ScreenshotClient(); Loading libs/gui/ISurfaceComposer.cpp +32 −2 Original line number Original line Diff line number Diff line Loading @@ -115,7 +115,7 @@ public: data.writeInt32(reqHeight); data.writeInt32(reqHeight); data.writeInt32(minLayerZ); data.writeInt32(minLayerZ); data.writeInt32(maxLayerZ); data.writeInt32(maxLayerZ); remote()->transact(BnSurfaceComposer::CAPTURE_SCREEN, data, &reply); remote()->transact(BnSurfaceComposer::CAPTURE_SCREEN_DEPRECATED, data, &reply); *heap = interface_cast<IMemoryHeap>(reply.readStrongBinder()); *heap = interface_cast<IMemoryHeap>(reply.readStrongBinder()); *width = reply.readInt32(); *width = reply.readInt32(); *height = reply.readInt32(); *height = reply.readInt32(); Loading @@ -123,6 +123,23 @@ public: return reply.readInt32(); return reply.readInt32(); } } virtual status_t captureScreen(const sp<IBinder>& display, const sp<IGraphicBufferProducer>& producer, uint32_t reqWidth, uint32_t reqHeight, uint32_t minLayerZ, uint32_t maxLayerZ) { Parcel data, reply; data.writeInterfaceToken(ISurfaceComposer::getInterfaceDescriptor()); data.writeStrongBinder(display); data.writeStrongBinder(producer->asBinder()); data.writeInt32(reqWidth); data.writeInt32(reqHeight); data.writeInt32(minLayerZ); data.writeInt32(maxLayerZ); remote()->transact(BnSurfaceComposer::CAPTURE_SCREEN, data, &reply); return reply.readInt32(); } virtual bool authenticateSurfaceTexture( virtual bool authenticateSurfaceTexture( const sp<IGraphicBufferProducer>& bufferProducer) const const sp<IGraphicBufferProducer>& bufferProducer) const { { Loading Loading @@ -268,7 +285,7 @@ status_t BnSurfaceComposer::onTransact( CHECK_INTERFACE(ISurfaceComposer, data, reply); CHECK_INTERFACE(ISurfaceComposer, data, reply); bootFinished(); bootFinished(); } break; } break; case CAPTURE_SCREEN: { case CAPTURE_SCREEN_DEPRECATED: { CHECK_INTERFACE(ISurfaceComposer, data, reply); CHECK_INTERFACE(ISurfaceComposer, data, reply); sp<IBinder> display = data.readStrongBinder(); sp<IBinder> display = data.readStrongBinder(); uint32_t reqWidth = data.readInt32(); uint32_t reqWidth = data.readInt32(); Loading @@ -286,6 +303,19 @@ status_t BnSurfaceComposer::onTransact( reply->writeInt32(f); reply->writeInt32(f); reply->writeInt32(res); reply->writeInt32(res); } break; } break; case CAPTURE_SCREEN: { CHECK_INTERFACE(ISurfaceComposer, data, reply); sp<IBinder> display = data.readStrongBinder(); sp<IGraphicBufferProducer> producer = interface_cast<IGraphicBufferProducer>(data.readStrongBinder()); uint32_t reqWidth = data.readInt32(); uint32_t reqHeight = data.readInt32(); uint32_t minLayerZ = data.readInt32(); uint32_t maxLayerZ = data.readInt32(); status_t res = captureScreen(display, producer, reqWidth, reqHeight, minLayerZ, maxLayerZ); reply->writeInt32(res); } break; case AUTHENTICATE_SURFACE: { case AUTHENTICATE_SURFACE: { CHECK_INTERFACE(ISurfaceComposer, data, reply); CHECK_INTERFACE(ISurfaceComposer, data, reply); sp<IGraphicBufferProducer> bufferProducer = sp<IGraphicBufferProducer> bufferProducer = Loading libs/gui/SurfaceComposerClient.cpp +11 −0 Original line number Original line Diff line number Diff line Loading @@ -606,6 +606,17 @@ void SurfaceComposerClient::unblankDisplay(const sp<IBinder>& token) { // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- status_t ScreenshotClient::capture( const sp<IBinder>& display, const sp<IGraphicBufferProducer>& producer, uint32_t reqWidth, uint32_t reqHeight, uint32_t minLayerZ, uint32_t maxLayerZ) { sp<ISurfaceComposer> s(ComposerService::getComposerService()); if (s == NULL) return NO_INIT; return s->captureScreen(display, producer, reqWidth, reqHeight, minLayerZ, maxLayerZ); } ScreenshotClient::ScreenshotClient() ScreenshotClient::ScreenshotClient() : mWidth(0), mHeight(0), mFormat(PIXEL_FORMAT_NONE) { : mWidth(0), mHeight(0), mFormat(PIXEL_FORMAT_NONE) { } } Loading services/surfaceflinger/Layer.h +4 −0 Original line number Original line Diff line number Diff line Loading @@ -112,6 +112,10 @@ protected: virtual void dumpStats(String8& result, char* buffer, size_t SIZE) const; virtual void dumpStats(String8& result, char* buffer, size_t SIZE) const; virtual void clearStats(); virtual void clearStats(); sp<SurfaceFlingerConsumer> getConsumer() const { return mSurfaceFlingerConsumer; } private: private: // Creates an instance of ISurface for this Layer. // Creates an instance of ISurface for this Layer. virtual sp<ISurface> createSurface(); virtual sp<ISurface> createSurface(); Loading Loading
include/gui/ISurfaceComposer.h +7 −2 Original line number Original line Diff line number Diff line Loading @@ -103,7 +103,6 @@ public: uint32_t reqWidth, uint32_t reqHeight, uint32_t reqWidth, uint32_t reqHeight, uint32_t minLayerZ, uint32_t maxLayerZ) = 0; uint32_t minLayerZ, uint32_t maxLayerZ) = 0; /* triggers screen off and waits for it to complete */ /* triggers screen off and waits for it to complete */ virtual void blank(const sp<IBinder>& display) = 0; virtual void blank(const sp<IBinder>& display) = 0; Loading @@ -113,6 +112,11 @@ public: /* returns information about a display /* returns information about a display * intended to be used to get information about built-in displays */ * intended to be used to get information about built-in displays */ virtual status_t getDisplayInfo(const sp<IBinder>& display, DisplayInfo* info) = 0; virtual status_t getDisplayInfo(const sp<IBinder>& display, DisplayInfo* info) = 0; virtual status_t captureScreen(const sp<IBinder>& display, const sp<IGraphicBufferProducer>& producer, uint32_t reqWidth, uint32_t reqHeight, uint32_t minLayerZ, uint32_t maxLayerZ) = 0; }; }; // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- Loading @@ -130,11 +134,12 @@ public: GET_BUILT_IN_DISPLAY, GET_BUILT_IN_DISPLAY, SET_TRANSACTION_STATE, SET_TRANSACTION_STATE, AUTHENTICATE_SURFACE, AUTHENTICATE_SURFACE, CAPTURE_SCREEN, CAPTURE_SCREEN_DEPRECATED, BLANK, BLANK, UNBLANK, UNBLANK, GET_DISPLAY_INFO, GET_DISPLAY_INFO, CONNECT_DISPLAY, CONNECT_DISPLAY, CAPTURE_SCREEN, }; }; virtual status_t onTransact(uint32_t code, const Parcel& data, virtual status_t onTransact(uint32_t code, const Parcel& data, Loading
include/gui/SurfaceComposerClient.h +9 −0 Original line number Original line Diff line number Diff line Loading @@ -156,10 +156,19 @@ private: class ScreenshotClient class ScreenshotClient { { public: static status_t capture( const sp<IBinder>& display, const sp<IGraphicBufferProducer>& producer, uint32_t reqWidth, uint32_t reqHeight, uint32_t minLayerZ, uint32_t maxLayerZ); private: sp<IMemoryHeap> mHeap; sp<IMemoryHeap> mHeap; uint32_t mWidth; uint32_t mWidth; uint32_t mHeight; uint32_t mHeight; PixelFormat mFormat; PixelFormat mFormat; public: public: ScreenshotClient(); ScreenshotClient(); Loading
libs/gui/ISurfaceComposer.cpp +32 −2 Original line number Original line Diff line number Diff line Loading @@ -115,7 +115,7 @@ public: data.writeInt32(reqHeight); data.writeInt32(reqHeight); data.writeInt32(minLayerZ); data.writeInt32(minLayerZ); data.writeInt32(maxLayerZ); data.writeInt32(maxLayerZ); remote()->transact(BnSurfaceComposer::CAPTURE_SCREEN, data, &reply); remote()->transact(BnSurfaceComposer::CAPTURE_SCREEN_DEPRECATED, data, &reply); *heap = interface_cast<IMemoryHeap>(reply.readStrongBinder()); *heap = interface_cast<IMemoryHeap>(reply.readStrongBinder()); *width = reply.readInt32(); *width = reply.readInt32(); *height = reply.readInt32(); *height = reply.readInt32(); Loading @@ -123,6 +123,23 @@ public: return reply.readInt32(); return reply.readInt32(); } } virtual status_t captureScreen(const sp<IBinder>& display, const sp<IGraphicBufferProducer>& producer, uint32_t reqWidth, uint32_t reqHeight, uint32_t minLayerZ, uint32_t maxLayerZ) { Parcel data, reply; data.writeInterfaceToken(ISurfaceComposer::getInterfaceDescriptor()); data.writeStrongBinder(display); data.writeStrongBinder(producer->asBinder()); data.writeInt32(reqWidth); data.writeInt32(reqHeight); data.writeInt32(minLayerZ); data.writeInt32(maxLayerZ); remote()->transact(BnSurfaceComposer::CAPTURE_SCREEN, data, &reply); return reply.readInt32(); } virtual bool authenticateSurfaceTexture( virtual bool authenticateSurfaceTexture( const sp<IGraphicBufferProducer>& bufferProducer) const const sp<IGraphicBufferProducer>& bufferProducer) const { { Loading Loading @@ -268,7 +285,7 @@ status_t BnSurfaceComposer::onTransact( CHECK_INTERFACE(ISurfaceComposer, data, reply); CHECK_INTERFACE(ISurfaceComposer, data, reply); bootFinished(); bootFinished(); } break; } break; case CAPTURE_SCREEN: { case CAPTURE_SCREEN_DEPRECATED: { CHECK_INTERFACE(ISurfaceComposer, data, reply); CHECK_INTERFACE(ISurfaceComposer, data, reply); sp<IBinder> display = data.readStrongBinder(); sp<IBinder> display = data.readStrongBinder(); uint32_t reqWidth = data.readInt32(); uint32_t reqWidth = data.readInt32(); Loading @@ -286,6 +303,19 @@ status_t BnSurfaceComposer::onTransact( reply->writeInt32(f); reply->writeInt32(f); reply->writeInt32(res); reply->writeInt32(res); } break; } break; case CAPTURE_SCREEN: { CHECK_INTERFACE(ISurfaceComposer, data, reply); sp<IBinder> display = data.readStrongBinder(); sp<IGraphicBufferProducer> producer = interface_cast<IGraphicBufferProducer>(data.readStrongBinder()); uint32_t reqWidth = data.readInt32(); uint32_t reqHeight = data.readInt32(); uint32_t minLayerZ = data.readInt32(); uint32_t maxLayerZ = data.readInt32(); status_t res = captureScreen(display, producer, reqWidth, reqHeight, minLayerZ, maxLayerZ); reply->writeInt32(res); } break; case AUTHENTICATE_SURFACE: { case AUTHENTICATE_SURFACE: { CHECK_INTERFACE(ISurfaceComposer, data, reply); CHECK_INTERFACE(ISurfaceComposer, data, reply); sp<IGraphicBufferProducer> bufferProducer = sp<IGraphicBufferProducer> bufferProducer = Loading
libs/gui/SurfaceComposerClient.cpp +11 −0 Original line number Original line Diff line number Diff line Loading @@ -606,6 +606,17 @@ void SurfaceComposerClient::unblankDisplay(const sp<IBinder>& token) { // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- status_t ScreenshotClient::capture( const sp<IBinder>& display, const sp<IGraphicBufferProducer>& producer, uint32_t reqWidth, uint32_t reqHeight, uint32_t minLayerZ, uint32_t maxLayerZ) { sp<ISurfaceComposer> s(ComposerService::getComposerService()); if (s == NULL) return NO_INIT; return s->captureScreen(display, producer, reqWidth, reqHeight, minLayerZ, maxLayerZ); } ScreenshotClient::ScreenshotClient() ScreenshotClient::ScreenshotClient() : mWidth(0), mHeight(0), mFormat(PIXEL_FORMAT_NONE) { : mWidth(0), mHeight(0), mFormat(PIXEL_FORMAT_NONE) { } } Loading
services/surfaceflinger/Layer.h +4 −0 Original line number Original line Diff line number Diff line Loading @@ -112,6 +112,10 @@ protected: virtual void dumpStats(String8& result, char* buffer, size_t SIZE) const; virtual void dumpStats(String8& result, char* buffer, size_t SIZE) const; virtual void clearStats(); virtual void clearStats(); sp<SurfaceFlingerConsumer> getConsumer() const { return mSurfaceFlingerConsumer; } private: private: // Creates an instance of ISurface for this Layer. // Creates an instance of ISurface for this Layer. virtual sp<ISurface> createSurface(); virtual sp<ISurface> createSurface(); Loading