diff --git a/libs/gui/SurfaceControl.cpp b/libs/gui/SurfaceControl.cpp index f4e88f5db..16e533cd2 100644 --- a/libs/gui/SurfaceControl.cpp +++ b/libs/gui/SurfaceControl.cpp @@ -46,13 +46,13 @@ namespace android { // ============================================================================ SurfaceControl::SurfaceControl( - const sp& client, + const sp& client, const sp& handle, const sp& gbp) : mClient(client), mHandle(handle), mGraphicBufferProducer(gbp) { } - + SurfaceControl::~SurfaceControl() { destroy(); @@ -71,7 +71,7 @@ void SurfaceControl::destroy() IPCThreadState::self()->flushCommands(); } -void SurfaceControl::clear() +void SurfaceControl::clear() { // here, the window manager tells us explicitly that we should destroy // the surface's resource. Soon after this call, it will also release @@ -83,7 +83,7 @@ void SurfaceControl::clear() } bool SurfaceControl::isSameSurface( - const sp& lhs, const sp& rhs) + const sp& lhs, const sp& rhs) { if (lhs == 0 || rhs == 0) return false; @@ -181,7 +181,9 @@ sp SurfaceControl::getSurface() const { Mutex::Autolock _l(mLock); if (mSurfaceData == 0) { - mSurfaceData = new Surface(mGraphicBufferProducer); + // This surface is always consumed by SurfaceFlinger, so the + // producerControlledByApp value doesn't matter; using false. + mSurfaceData = new Surface(mGraphicBufferProducer, false); } return mSurfaceData; } diff --git a/services/surfaceflinger/DisplayDevice.cpp b/services/surfaceflinger/DisplayDevice.cpp index 61a936157..917d4cd3c 100644 --- a/services/surfaceflinger/DisplayDevice.cpp +++ b/services/surfaceflinger/DisplayDevice.cpp @@ -73,7 +73,7 @@ DisplayDevice::DisplayDevice( mLayerStack(NO_LAYER_STACK), mOrientation() { - mNativeWindow = new Surface(producer); + mNativeWindow = new Surface(producer, false); ANativeWindow* const window = mNativeWindow.get(); int format; diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index fa1ea0989..def461811 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -2782,7 +2782,7 @@ status_t SurfaceFlinger::captureScreenImplLocked( // create a surface (because we're a producer, and we need to // dequeue/queue a buffer) - sp sur = new Surface(producer); + sp sur = new Surface(producer, false); ANativeWindow* window = sur.get(); status_t result = NO_ERROR;