Loading include/surfaceflinger/ISurfaceComposer.h +3 −2 Original line number Diff line number Diff line Loading @@ -132,9 +132,10 @@ public: virtual status_t turnElectronBeamOff(int32_t mode) = 0; virtual status_t turnElectronBeamOn(int32_t mode) = 0; /* verify that an ISurface was created by SurfaceFlinger. /* verify that an ISurfaceTexture was created by SurfaceFlinger. */ virtual bool authenticateSurface(const sp<ISurface>& surface) const = 0; virtual bool authenticateSurfaceTexture( const sp<ISurfaceTexture>& surface) const = 0; }; // ---------------------------------------------------------------------------- Loading libs/gui/ISurfaceComposer.cpp +15 −11 Original line number Diff line number Diff line Loading @@ -31,6 +31,8 @@ #include <ui/DisplayInfo.h> #include <gui/ISurfaceTexture.h> #include <utils/Log.h> // --------------------------------------------------------------------------- Loading Loading @@ -166,35 +168,36 @@ public: return reply.readInt32(); } virtual bool authenticateSurface(const sp<ISurface>& surface) const virtual bool authenticateSurfaceTexture( const sp<ISurfaceTexture>& surfaceTexture) const { Parcel data, reply; int err = NO_ERROR; err = data.writeInterfaceToken( ISurfaceComposer::getInterfaceDescriptor()); if (err != NO_ERROR) { LOGE("ISurfaceComposer::authenticateSurface: error writing " LOGE("ISurfaceComposer::authenticateSurfaceTexture: error writing " "interface descriptor: %s (%d)", strerror(-err), -err); return false; } err = data.writeStrongBinder(surface->asBinder()); err = data.writeStrongBinder(surfaceTexture->asBinder()); if (err != NO_ERROR) { LOGE("ISurfaceComposer::authenticateSurface: error writing strong " "binder to parcel: %s (%d)", strerror(-err), -err); LOGE("ISurfaceComposer::authenticateSurfaceTexture: error writing " "strong binder to parcel: %s (%d)", strerror(-err), -err); return false; } err = remote()->transact(BnSurfaceComposer::AUTHENTICATE_SURFACE, data, &reply); if (err != NO_ERROR) { LOGE("ISurfaceComposer::authenticateSurface: error performing " "transaction: %s (%d)", strerror(-err), -err); LOGE("ISurfaceComposer::authenticateSurfaceTexture: error " "performing transaction: %s (%d)", strerror(-err), -err); return false; } int32_t result = 0; err = reply.readInt32(&result); if (err != NO_ERROR) { LOGE("ISurfaceComposer::authenticateSurface: error retrieving " "result: %s (%d)", strerror(-err), -err); LOGE("ISurfaceComposer::authenticateSurfaceTexture: error " "retrieving result: %s (%d)", strerror(-err), -err); return false; } return result != 0; Loading Loading @@ -291,8 +294,9 @@ status_t BnSurfaceComposer::onTransact( } break; case AUTHENTICATE_SURFACE: { CHECK_INTERFACE(ISurfaceComposer, data, reply); sp<ISurface> surface = interface_cast<ISurface>(data.readStrongBinder()); int32_t result = authenticateSurface(surface) ? 1 : 0; sp<ISurfaceTexture> surfaceTexture = interface_cast<ISurfaceTexture>(data.readStrongBinder()); int32_t result = authenticateSurfaceTexture(surfaceTexture) ? 1 : 0; reply->writeInt32(result); } break; default: Loading libs/gui/Surface.cpp +0 −3 Original line number Diff line number Diff line Loading @@ -342,9 +342,6 @@ sp<IBinder> Surface::asBinder() const { int Surface::query(int what, int* value) const { switch (what) { case NATIVE_WINDOW_QUEUES_TO_WINDOW_COMPOSER: *value = 1; return NO_ERROR; case NATIVE_WINDOW_CONCRETE_TYPE: *value = NATIVE_WINDOW_SURFACE; return NO_ERROR; Loading libs/gui/SurfaceTextureClient.cpp +11 −1 Original line number Diff line number Diff line Loading @@ -18,6 +18,8 @@ //#define LOG_NDEBUG 0 #include <gui/SurfaceTextureClient.h> #include <surfaceflinger/ISurfaceComposer.h> #include <surfaceflinger/SurfaceComposerClient.h> #include <utils/Log.h> Loading Loading @@ -234,7 +236,15 @@ int SurfaceTextureClient::query(int what, int* value) const { } break; case NATIVE_WINDOW_QUEUES_TO_WINDOW_COMPOSER: { sp<ISurfaceComposer> composer( ComposerService::getComposerService()); if (composer->authenticateSurfaceTexture(mSurfaceTexture)) { *value = 1; } else { *value = 0; } } return NO_ERROR; case NATIVE_WINDOW_CONCRETE_TYPE: *value = NATIVE_WINDOW_SURFACE_TEXTURE_CLIENT; Loading services/surfaceflinger/Layer.cpp +5 −0 Original line number Diff line number Diff line Loading @@ -133,6 +133,11 @@ sp<ISurface> Layer::createSurface() return sur; } wp<IBinder> Layer::getSurfaceTextureBinder() const { return mSurfaceTexture->asBinder(); } status_t Layer::setBuffers( uint32_t w, uint32_t h, PixelFormat format, uint32_t flags) { Loading Loading
include/surfaceflinger/ISurfaceComposer.h +3 −2 Original line number Diff line number Diff line Loading @@ -132,9 +132,10 @@ public: virtual status_t turnElectronBeamOff(int32_t mode) = 0; virtual status_t turnElectronBeamOn(int32_t mode) = 0; /* verify that an ISurface was created by SurfaceFlinger. /* verify that an ISurfaceTexture was created by SurfaceFlinger. */ virtual bool authenticateSurface(const sp<ISurface>& surface) const = 0; virtual bool authenticateSurfaceTexture( const sp<ISurfaceTexture>& surface) const = 0; }; // ---------------------------------------------------------------------------- Loading
libs/gui/ISurfaceComposer.cpp +15 −11 Original line number Diff line number Diff line Loading @@ -31,6 +31,8 @@ #include <ui/DisplayInfo.h> #include <gui/ISurfaceTexture.h> #include <utils/Log.h> // --------------------------------------------------------------------------- Loading Loading @@ -166,35 +168,36 @@ public: return reply.readInt32(); } virtual bool authenticateSurface(const sp<ISurface>& surface) const virtual bool authenticateSurfaceTexture( const sp<ISurfaceTexture>& surfaceTexture) const { Parcel data, reply; int err = NO_ERROR; err = data.writeInterfaceToken( ISurfaceComposer::getInterfaceDescriptor()); if (err != NO_ERROR) { LOGE("ISurfaceComposer::authenticateSurface: error writing " LOGE("ISurfaceComposer::authenticateSurfaceTexture: error writing " "interface descriptor: %s (%d)", strerror(-err), -err); return false; } err = data.writeStrongBinder(surface->asBinder()); err = data.writeStrongBinder(surfaceTexture->asBinder()); if (err != NO_ERROR) { LOGE("ISurfaceComposer::authenticateSurface: error writing strong " "binder to parcel: %s (%d)", strerror(-err), -err); LOGE("ISurfaceComposer::authenticateSurfaceTexture: error writing " "strong binder to parcel: %s (%d)", strerror(-err), -err); return false; } err = remote()->transact(BnSurfaceComposer::AUTHENTICATE_SURFACE, data, &reply); if (err != NO_ERROR) { LOGE("ISurfaceComposer::authenticateSurface: error performing " "transaction: %s (%d)", strerror(-err), -err); LOGE("ISurfaceComposer::authenticateSurfaceTexture: error " "performing transaction: %s (%d)", strerror(-err), -err); return false; } int32_t result = 0; err = reply.readInt32(&result); if (err != NO_ERROR) { LOGE("ISurfaceComposer::authenticateSurface: error retrieving " "result: %s (%d)", strerror(-err), -err); LOGE("ISurfaceComposer::authenticateSurfaceTexture: error " "retrieving result: %s (%d)", strerror(-err), -err); return false; } return result != 0; Loading Loading @@ -291,8 +294,9 @@ status_t BnSurfaceComposer::onTransact( } break; case AUTHENTICATE_SURFACE: { CHECK_INTERFACE(ISurfaceComposer, data, reply); sp<ISurface> surface = interface_cast<ISurface>(data.readStrongBinder()); int32_t result = authenticateSurface(surface) ? 1 : 0; sp<ISurfaceTexture> surfaceTexture = interface_cast<ISurfaceTexture>(data.readStrongBinder()); int32_t result = authenticateSurfaceTexture(surfaceTexture) ? 1 : 0; reply->writeInt32(result); } break; default: Loading
libs/gui/Surface.cpp +0 −3 Original line number Diff line number Diff line Loading @@ -342,9 +342,6 @@ sp<IBinder> Surface::asBinder() const { int Surface::query(int what, int* value) const { switch (what) { case NATIVE_WINDOW_QUEUES_TO_WINDOW_COMPOSER: *value = 1; return NO_ERROR; case NATIVE_WINDOW_CONCRETE_TYPE: *value = NATIVE_WINDOW_SURFACE; return NO_ERROR; Loading
libs/gui/SurfaceTextureClient.cpp +11 −1 Original line number Diff line number Diff line Loading @@ -18,6 +18,8 @@ //#define LOG_NDEBUG 0 #include <gui/SurfaceTextureClient.h> #include <surfaceflinger/ISurfaceComposer.h> #include <surfaceflinger/SurfaceComposerClient.h> #include <utils/Log.h> Loading Loading @@ -234,7 +236,15 @@ int SurfaceTextureClient::query(int what, int* value) const { } break; case NATIVE_WINDOW_QUEUES_TO_WINDOW_COMPOSER: { sp<ISurfaceComposer> composer( ComposerService::getComposerService()); if (composer->authenticateSurfaceTexture(mSurfaceTexture)) { *value = 1; } else { *value = 0; } } return NO_ERROR; case NATIVE_WINDOW_CONCRETE_TYPE: *value = NATIVE_WINDOW_SURFACE_TEXTURE_CLIENT; Loading
services/surfaceflinger/Layer.cpp +5 −0 Original line number Diff line number Diff line Loading @@ -133,6 +133,11 @@ sp<ISurface> Layer::createSurface() return sur; } wp<IBinder> Layer::getSurfaceTextureBinder() const { return mSurfaceTexture->asBinder(); } status_t Layer::setBuffers( uint32_t w, uint32_t h, PixelFormat format, uint32_t flags) { Loading