summaryrefslogtreecommitdiff
path: root/libs/surfaceflinger/LayerBitmap.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libs/surfaceflinger/LayerBitmap.cpp')
-rw-r--r--libs/surfaceflinger/LayerBitmap.cpp14
1 files changed, 10 insertions, 4 deletions
diff --git a/libs/surfaceflinger/LayerBitmap.cpp b/libs/surfaceflinger/LayerBitmap.cpp
index a368ca93aa..e0984fe48c 100644
--- a/libs/surfaceflinger/LayerBitmap.cpp
+++ b/libs/surfaceflinger/LayerBitmap.cpp
@@ -130,13 +130,10 @@ status_t Buffer::lock(GGLSurface* sur, uint32_t usage)
return res;
}
-
-
// ===========================================================================
// LayerBitmap
// ===========================================================================
-
LayerBitmap::LayerBitmap()
: mInfo(0), mWidth(0), mHeight(0)
{
@@ -184,7 +181,7 @@ sp<Buffer> LayerBitmap::allocate()
sp<Buffer> buffer(mBuffer);
const uint32_t w = mWidth;
const uint32_t h = mHeight;
- if (w != buffer->getWidth() || h != buffer->getHeight()) {
+ if (buffer!=0 && (w != buffer->getWidth() || h != buffer->getHeight())) {
surface_info_t* info = mInfo;
buffer = new Buffer(w, h, mFormat, mFlags);
status_t err = buffer->initCheck();
@@ -200,6 +197,15 @@ sp<Buffer> LayerBitmap::allocate()
return buffer;
}
+status_t LayerBitmap::free()
+{
+ mBuffer.clear();
+ mWidth = 0;
+ mHeight = 0;
+ return NO_ERROR;
+}
+
+
// ---------------------------------------------------------------------------
}; // namespace android