diff options
author | Jamie Gennis <jgennis@google.com> | 2011-08-18 14:31:39 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-08-18 14:31:39 -0700 |
commit | c8f4c6a5d02d46eedd876bfc0be3468d6d4000e0 (patch) | |
tree | 91c045bb01ac5e5f0f7d46312b8e6ffa6f6b4b88 /libs | |
parent | a8993e10f9aca690722512d147d2f98ed29a3d75 (diff) | |
parent | 9b8fc65b0353db3a962ab52dc556c356d556fcc1 (diff) | |
download | frameworks_base-c8f4c6a5d02d46eedd876bfc0be3468d6d4000e0.zip frameworks_base-c8f4c6a5d02d46eedd876bfc0be3468d6d4000e0.tar.gz frameworks_base-c8f4c6a5d02d46eedd876bfc0be3468d6d4000e0.tar.bz2 |
Merge "SurfaceTexture: fix queues-to-composer"
Diffstat (limited to 'libs')
-rw-r--r-- | libs/gui/ISurfaceComposer.cpp | 26 | ||||
-rw-r--r-- | libs/gui/Surface.cpp | 3 | ||||
-rw-r--r-- | libs/gui/SurfaceTextureClient.cpp | 12 |
3 files changed, 26 insertions, 15 deletions
diff --git a/libs/gui/ISurfaceComposer.cpp b/libs/gui/ISurfaceComposer.cpp index c1156d5..030a83e 100644 --- a/libs/gui/ISurfaceComposer.cpp +++ b/libs/gui/ISurfaceComposer.cpp @@ -31,6 +31,8 @@ #include <ui/DisplayInfo.h> +#include <gui/ISurfaceTexture.h> + #include <utils/Log.h> // --------------------------------------------------------------------------- @@ -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; @@ -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: diff --git a/libs/gui/Surface.cpp b/libs/gui/Surface.cpp index 2c70251..54d04aa 100644 --- a/libs/gui/Surface.cpp +++ b/libs/gui/Surface.cpp @@ -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; diff --git a/libs/gui/SurfaceTextureClient.cpp b/libs/gui/SurfaceTextureClient.cpp index e91be84..5a35b4d 100644 --- a/libs/gui/SurfaceTextureClient.cpp +++ b/libs/gui/SurfaceTextureClient.cpp @@ -18,6 +18,8 @@ //#define LOG_NDEBUG 0 #include <gui/SurfaceTextureClient.h> +#include <surfaceflinger/ISurfaceComposer.h> +#include <surfaceflinger/SurfaceComposerClient.h> #include <utils/Log.h> @@ -234,7 +236,15 @@ int SurfaceTextureClient::query(int what, int* value) const { } break; case NATIVE_WINDOW_QUEUES_TO_WINDOW_COMPOSER: - *value = 0; + { + 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; |