diff options
author | Mathias Agopian <mathias@google.com> | 2009-04-22 15:23:34 -0700 |
---|---|---|
committer | Mathias Agopian <mathias@google.com> | 2009-04-24 16:30:38 -0700 |
commit | 0aa758d64ac530833ce9a311b164c9175a7a054c (patch) | |
tree | dffe53978839a5d7cf270d88a94f4c3b084a37fa /libs/surfaceflinger/MessageQueue.h | |
parent | f1d8e87b09abf963cd5b6a026194c1940fadb7b4 (diff) | |
download | frameworks_native-0aa758d64ac530833ce9a311b164c9175a7a054c.zip frameworks_native-0aa758d64ac530833ce9a311b164c9175a7a054c.tar.gz frameworks_native-0aa758d64ac530833ce9a311b164c9175a7a054c.tar.bz2 |
Surfaces are now destroyed properly in SurfaceFlinger.
First, the window manager tells us when a surface is no longer needed. At this point, several things happen:
- the surface is removed from the active/visible list
- it is added to a purgatory list, where it waits for all clients to release their reference
- it destroys all data/state that can be spared
Later, when all clients are done, the remains of the Surface are disposed off: it is removed from the purgatory and destroyed.
In particular its gralloc buffers are destroyed at that point (when we're sure nobody is using them anymore).
Diffstat (limited to 'libs/surfaceflinger/MessageQueue.h')
-rw-r--r-- | libs/surfaceflinger/MessageQueue.h | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/libs/surfaceflinger/MessageQueue.h b/libs/surfaceflinger/MessageQueue.h index d894fe2..c118897 100644 --- a/libs/surfaceflinger/MessageQueue.h +++ b/libs/surfaceflinger/MessageQueue.h @@ -148,8 +148,9 @@ public: uint32_t what; int32_t arg0; - MessageBase(uint32_t what=0, int32_t arg0=0) - : when(0), what(what), arg0(arg0) { } + MessageBase() : when(0), what(0), arg0(0) { } + MessageBase(uint32_t what, int32_t arg0=0) + : when(0), what(what), arg0(arg0) { } // return true if message has a handler virtual bool handler() { return false; } |