summaryrefslogtreecommitdiff
path: root/libs/gui/SurfaceControl.cpp
diff options
context:
space:
mode:
author Robert Carr <racarr@google.com> 2019-01-29 15:27:55 -0800
committer Robert Carr <racarr@google.com> 2019-02-01 12:19:04 -0800
commit8b6b32182d1c4f37e00b2c539f2f81ef2c846e63 (patch)
tree24291030ad076ba11b87a6fd5e3f854072191294 /libs/gui/SurfaceControl.cpp
parent44650259c25b14fca17689307bb8d79b4ae77b36 (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.cpp6
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