diff options
author | Jesse Hall <jessehall@google.com> | 2013-08-08 12:15:49 -0700 |
---|---|---|
committer | Jesse Hall <jessehall@google.com> | 2013-08-08 13:12:29 -0700 |
commit | 6c913be9ca95fd6b556d056e165a4ba6dc69795b (patch) | |
tree | e6a1bc9d78a1a7eef75dd736ddf302357cc8987a /libs/gui/ISurfaceComposer.cpp | |
parent | 74020ca133095e1dff635ee74d9e9657d0ceac3b (diff) | |
download | frameworks_native-6c913be9ca95fd6b556d056e165a4ba6dc69795b.zip frameworks_native-6c913be9ca95fd6b556d056e165a4ba6dc69795b.tar.gz frameworks_native-6c913be9ca95fd6b556d056e165a4ba6dc69795b.tar.bz2 |
Add ISurfaceComposer::destroyDisplay
Bug: 10191053
Change-Id: Ia89286f95421344a60ffedaaca5825c4e3cd7f9e
Diffstat (limited to 'libs/gui/ISurfaceComposer.cpp')
-rw-r--r-- | libs/gui/ISurfaceComposer.cpp | 51 |
1 files changed, 38 insertions, 13 deletions
diff --git a/libs/gui/ISurfaceComposer.cpp b/libs/gui/ISurfaceComposer.cpp index a9217ca..aab0604 100644 --- a/libs/gui/ISurfaceComposer.cpp +++ b/libs/gui/ISurfaceComposer.cpp @@ -185,6 +185,14 @@ public: return reply.readStrongBinder(); } + virtual void destroyDisplay(const sp<IBinder>& display) + { + Parcel data, reply; + data.writeInterfaceToken(ISurfaceComposer::getInterfaceDescriptor()); + data.writeStrongBinder(display); + remote()->transact(BnSurfaceComposer::DESTROY_DISPLAY, data, &reply); + } + virtual sp<IBinder> getBuiltInDisplay(int32_t id) { Parcel data, reply; @@ -233,12 +241,14 @@ status_t BnSurfaceComposer::onTransact( CHECK_INTERFACE(ISurfaceComposer, data, reply); sp<IBinder> b = createConnection()->asBinder(); reply->writeStrongBinder(b); - } break; + return NO_ERROR; + } case CREATE_GRAPHIC_BUFFER_ALLOC: { CHECK_INTERFACE(ISurfaceComposer, data, reply); sp<IBinder> b = createGraphicBufferAlloc()->asBinder(); reply->writeStrongBinder(b); - } break; + return NO_ERROR; + } case SET_TRANSACTION_STATE: { CHECK_INTERFACE(ISurfaceComposer, data, reply); size_t count = data.readInt32(); @@ -259,11 +269,13 @@ status_t BnSurfaceComposer::onTransact( } uint32_t flags = data.readInt32(); setTransactionState(state, displays, flags); - } break; + return NO_ERROR; + } case BOOT_FINISHED: { CHECK_INTERFACE(ISurfaceComposer, data, reply); bootFinished(); - } break; + return NO_ERROR; + } case CAPTURE_SCREEN: { CHECK_INTERFACE(ISurfaceComposer, data, reply); sp<IBinder> display = data.readStrongBinder(); @@ -276,20 +288,22 @@ status_t BnSurfaceComposer::onTransact( status_t res = captureScreen(display, producer, reqWidth, reqHeight, minLayerZ, maxLayerZ); reply->writeInt32(res); - } break; + return NO_ERROR; + } case AUTHENTICATE_SURFACE: { CHECK_INTERFACE(ISurfaceComposer, data, reply); sp<IGraphicBufferProducer> bufferProducer = interface_cast<IGraphicBufferProducer>(data.readStrongBinder()); int32_t result = authenticateSurfaceTexture(bufferProducer) ? 1 : 0; reply->writeInt32(result); - } break; + return NO_ERROR; + } case CREATE_DISPLAY_EVENT_CONNECTION: { CHECK_INTERFACE(ISurfaceComposer, data, reply); sp<IDisplayEventConnection> connection(createDisplayEventConnection()); reply->writeStrongBinder(connection->asBinder()); return NO_ERROR; - } break; + } case CREATE_DISPLAY: { CHECK_INTERFACE(ISurfaceComposer, data, reply); String8 displayName = data.readString8(); @@ -297,24 +311,32 @@ status_t BnSurfaceComposer::onTransact( sp<IBinder> display(createDisplay(displayName, secure)); reply->writeStrongBinder(display); return NO_ERROR; - } break; + } + case DESTROY_DISPLAY: { + CHECK_INTERFACE(ISurfaceComposer, data, reply); + sp<IBinder> display = data.readStrongBinder(); + destroyDisplay(display); + return NO_ERROR; + } case GET_BUILT_IN_DISPLAY: { CHECK_INTERFACE(ISurfaceComposer, data, reply); int32_t id = data.readInt32(); sp<IBinder> display(getBuiltInDisplay(id)); reply->writeStrongBinder(display); return NO_ERROR; - } break; + } case BLANK: { CHECK_INTERFACE(ISurfaceComposer, data, reply); sp<IBinder> display = data.readStrongBinder(); blank(display); - } break; + return NO_ERROR; + } case UNBLANK: { CHECK_INTERFACE(ISurfaceComposer, data, reply); sp<IBinder> display = data.readStrongBinder(); unblank(display); - } break; + return NO_ERROR; + } case GET_DISPLAY_INFO: { CHECK_INTERFACE(ISurfaceComposer, data, reply); DisplayInfo info; @@ -322,10 +344,13 @@ status_t BnSurfaceComposer::onTransact( status_t result = getDisplayInfo(display, &info); memcpy(reply->writeInplace(sizeof(DisplayInfo)), &info, sizeof(DisplayInfo)); reply->writeInt32(result); - } break; - default: + return NO_ERROR; + } + default: { return BBinder::onTransact(code, data, reply, flags); + } } + // should be unreachable return NO_ERROR; } |