diff options
author | 2019-01-29 15:27:55 -0800 | |
---|---|---|
committer | 2019-02-01 12:19:04 -0800 | |
commit | 8b6b32182d1c4f37e00b2c539f2f81ef2c846e63 (patch) | |
tree | 24291030ad076ba11b87a6fd5e3f854072191294 /libs/gui/SurfaceControl.cpp | |
parent | 44650259c25b14fca17689307bb8d79b4ae77b36 (diff) |
SurfaceControl: Allow calling destroy when mOwned is true
mOwned was just put in place to prevent the finalizer in SysUI
from destroying leashes, it was never meant to prevent explicit
calls to destroy. On another note we should probably remove destroy
or call it "release" but we can come back to that.
Change-Id: I72b0ab467105dc63094994de5482cec651fffaa3
Fixes: 113820778
Test: Builds
Diffstat (limited to 'libs/gui/SurfaceControl.cpp')
-rw-r--r-- | libs/gui/SurfaceControl.cpp | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/libs/gui/SurfaceControl.cpp b/libs/gui/SurfaceControl.cpp index 008f520bb0..f06d36aea3 100644 --- a/libs/gui/SurfaceControl.cpp +++ b/libs/gui/SurfaceControl.cpp @@ -63,6 +63,8 @@ SurfaceControl::SurfaceControl(const sp<SurfaceControl>& other) { SurfaceControl::~SurfaceControl() { + // Avoid reparenting the server-side surface to null if we are not the owner of it, + // meaning that we retrieved it from another process. if (mClient != nullptr && mHandle != nullptr && mOwned) { SurfaceComposerClient::doDropReferenceTransaction(mHandle, mClient->getClient()); } @@ -74,9 +76,7 @@ SurfaceControl::~SurfaceControl() void SurfaceControl::destroy() { - // Avoid destroying the server-side surface if we are not the owner of it, meaning that we - // retrieved it from another process. - if (isValid() && mOwned) { + if (isValid()) { SurfaceComposerClient::Transaction().reparent(this, nullptr).apply(); } // clear all references and trigger an IPC now, to make sure things |