diff options
Diffstat (limited to 'services/surfaceflinger/SurfaceFlinger.h')
-rw-r--r-- | services/surfaceflinger/SurfaceFlinger.h | 33 |
1 files changed, 26 insertions, 7 deletions
diff --git a/services/surfaceflinger/SurfaceFlinger.h b/services/surfaceflinger/SurfaceFlinger.h index 0e642c1..3c8f4e5 100644 --- a/services/surfaceflinger/SurfaceFlinger.h +++ b/services/surfaceflinger/SurfaceFlinger.h @@ -49,6 +49,7 @@ class DisplayHardware; class FreezeLock; class Layer; class LayerDim; +class LayerScreenshot; struct surface_flinger_cblk_t; #define LIKELY( exp ) (__builtin_expect( (exp) != 0, true )) @@ -186,6 +187,15 @@ public: void screenReleased(DisplayID dpy); void screenAcquired(DisplayID dpy); + status_t renderScreenToTexture(DisplayID dpy, + GLuint* textureName, GLfloat* uOut, GLfloat* vOut); + + status_t postMessageAsync(const sp<MessageBase>& msg, + nsecs_t reltime=0, uint32_t flags = 0); + + status_t postMessageSync(const sp<MessageBase>& msg, + nsecs_t reltime=0, uint32_t flags = 0); + status_t removeLayer(const sp<LayerBase>& layer); status_t addLayer(const sp<LayerBase>& layer); status_t invalidateLayerVisibility(const sp<LayerBase>& layer); @@ -195,6 +205,18 @@ public: GLuint getProtectedTexName() const { return mProtectedTexName; } + + class MessageDestroyGLTexture : public MessageBase { + GLuint texture; + public: + MessageDestroyGLTexture(GLuint texture) : texture(texture) { } + virtual bool handler() { + glDeleteTextures(1, &texture); + return true; + } + }; + + private: // DeathRecipient interface virtual void binderDied(const wp<IBinder>& who); @@ -204,7 +226,6 @@ private: friend class LayerBase; friend class LayerBaseClient; friend class Layer; - friend class LayerDim; sp<ISurface> createSurface( ISurfaceComposerClient::surface_data_t* params, @@ -222,6 +243,10 @@ private: const sp<Client>& client, DisplayID display, uint32_t w, uint32_t h, uint32_t flags); + sp<LayerScreenshot> createScreenshotSurface( + const sp<Client>& client, DisplayID display, + uint32_t w, uint32_t h, uint32_t flags); + status_t removeSurface(const sp<Client>& client, SurfaceID sid); status_t destroySurface(const wp<LayerBaseClient>& layer); uint32_t setClientStateLocked(const sp<Client>& client, const layer_state_t& s); @@ -329,12 +354,6 @@ private: mutable MessageQueue mEventQueue; - status_t postMessageAsync(const sp<MessageBase>& msg, - nsecs_t reltime=0, uint32_t flags = 0); - - status_t postMessageSync(const sp<MessageBase>& msg, - nsecs_t reltime=0, uint32_t flags = 0); - // access must be protected by mStateLock mutable Mutex mStateLock; State mCurrentState; |