Add ISurfaceComposer::destroyDisplay
Bug: 10191053
Change-Id: Ia89286f95421344a60ffedaaca5825c4e3cd7f9e
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
index b38ad10..bc10853 100644
--- a/services/surfaceflinger/SurfaceFlinger.cpp
+++ b/services/surfaceflinger/SurfaceFlinger.cpp
@@ -205,6 +205,25 @@
return token;
}
+void SurfaceFlinger::destroyDisplay(const sp<IBinder>& display) {
+ Mutex::Autolock _l(mStateLock);
+
+ ssize_t idx = mCurrentState.displays.indexOfKey(display);
+ if (idx < 0) {
+ ALOGW("destroyDisplay: invalid display token");
+ return;
+ }
+
+ const DisplayDeviceState& info(mCurrentState.displays.valueAt(idx));
+ if (!info.isVirtualDisplay()) {
+ ALOGE("destroyDisplay called for non-virtual display");
+ return;
+ }
+
+ mCurrentState.displays.removeItemsAt(idx);
+ setTransactionFlags(eDisplayTransactionNeeded);
+}
+
void SurfaceFlinger::createBuiltinDisplayLocked(DisplayDevice::DisplayType type) {
ALOGW_IF(mBuiltinDisplays[type],
"Overwriting display token for display type %d", type);