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).
5 files changed
tree: dffe53978839a5d7cf270d88a94f4c3b084a37fa
  1. awt/
  2. camera/
  3. cmds/
  4. im/
  5. include/
  6. libs/
  7. opengl/
  8. MODULE_LICENSE_APACHE2
  9. NOTICE