diff options
author | Romain Guy <romainguy@google.com> | 2011-01-13 12:13:20 -0800 |
---|---|---|
committer | Romain Guy <romainguy@google.com> | 2011-01-13 12:13:20 -0800 |
commit | ada830f639591b99c3e40de22b07296c7932a33f (patch) | |
tree | 308f469469e96ce7f99d2ec5135e7d44eb858a35 /libs/hwui/Caches.cpp | |
parent | 4f6aff386045000c2c03b903c7109cb42092b7ea (diff) | |
download | frameworks_base-ada830f639591b99c3e40de22b07296c7932a33f.zip frameworks_base-ada830f639591b99c3e40de22b07296c7932a33f.tar.gz frameworks_base-ada830f639591b99c3e40de22b07296c7932a33f.tar.bz2 |
Cleanup implementation of hardware layers.
The new implementation relies on OpenGLRenderer's existing layer
code instead of duplicating it. The new code is much cleaner, with
simpler and better APIs and allows tracking of drawn regions inside
layers. Region tracking is not yet enabled but this will be done
in a future CL.
Change-Id: Ie826121a2227de8252c77b992a61218defea5143
Diffstat (limited to 'libs/hwui/Caches.cpp')
-rw-r--r-- | libs/hwui/Caches.cpp | 27 |
1 files changed, 10 insertions, 17 deletions
diff --git a/libs/hwui/Caches.cpp b/libs/hwui/Caches.cpp index 3563064..fde4f96 100644 --- a/libs/hwui/Caches.cpp +++ b/libs/hwui/Caches.cpp @@ -109,29 +109,22 @@ void Caches::clearGarbage() { Mutex::Autolock _l(mGarbageLock); - size_t count = mFboGarbage.size(); + size_t count = mLayerGarbage.size(); for (size_t i = 0; i < count; i++) { - GLuint fbo = mFboGarbage.itemAt(i); - if (fbo) glDeleteFramebuffers(1, &fbo); - } - mFboGarbage.clear(); + Layer* layer = mLayerGarbage.itemAt(i); + if (layer) { + if (layer->fbo) glDeleteFramebuffers(1, &layer->fbo); + if (layer->texture) glDeleteTextures(1, &layer->texture); - count = mTextureGarbage.size(); - for (size_t i = 0; i < count; i++) { - GLuint texture = mTextureGarbage.itemAt(i); - if (texture) glDeleteTextures(1, &texture); + delete layer; + } } - mTextureGarbage.clear(); -} - -void Caches::deleteFboDeferred(GLuint fbo) { - Mutex::Autolock _l(mGarbageLock); - mFboGarbage.push(fbo); + mLayerGarbage.clear(); } -void Caches::deleteTextureDeferred(GLuint texture) { +void Caches::deleteLayerDeferred(Layer* layer) { Mutex::Autolock _l(mGarbageLock); - mTextureGarbage.push(texture); + mLayerGarbage.push(layer); } /////////////////////////////////////////////////////////////////////////////// |