Loading libs/gui/BLASTBufferQueue.cpp +8 −0 Original line number Diff line number Diff line Loading @@ -600,6 +600,14 @@ public: return BufferQueueProducer::connect(new AsyncProducerListener(listener), api, producerControlledByApp, output); } int query(int what, int* value) override { if (what == NATIVE_WINDOW_QUEUES_TO_WINDOW_COMPOSER) { *value = 1; return NO_ERROR; } return BufferQueueProducer::query(what, value); } }; // Similar to BufferQueue::createBufferQueue but creates an adapter specific bufferqueue producer. Loading libs/gui/Surface.cpp +4 −0 Original line number Diff line number Diff line Loading @@ -985,6 +985,10 @@ int Surface::query(int what, int* value) const { } break; case NATIVE_WINDOW_QUEUES_TO_WINDOW_COMPOSER: { status_t err = mGraphicBufferProducer->query(what, value); if (err == NO_ERROR) { return NO_ERROR; } if (composerService()->authenticateSurfaceTexture( mGraphicBufferProducer)) { *value = 1; Loading libs/gui/tests/BLASTBufferQueue_test.cpp +13 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ #include <gui/FrameTimestamps.h> #include <gui/IGraphicBufferProducer.h> #include <gui/IProducerListener.h> #include <gui/Surface.h> #include <gui/SurfaceComposerClient.h> #include <gui/SyncScreenCaptureListener.h> #include <private/gui/ComposerService.h> Loading Loading @@ -515,6 +516,18 @@ TEST_F(BLASTBufferQueueTest, CustomProducerListener) { adapter.waitForCallbacks(); } TEST_F(BLASTBufferQueueTest, QueryNativeWindowQueuesToWindowComposer) { BLASTBufferQueueHelper adapter(mSurfaceControl, mDisplayWidth, mDisplayHeight); sp<android::Surface> surface = new Surface(adapter.getIGraphicBufferProducer()); ANativeWindow* nativeWindow = (ANativeWindow*)(surface.get()); int queuesToNativeWindow = 0; int err = nativeWindow->query(nativeWindow, NATIVE_WINDOW_QUEUES_TO_WINDOW_COMPOSER, &queuesToNativeWindow); ASSERT_EQ(NO_ERROR, err); ASSERT_EQ(queuesToNativeWindow, 1); } class BLASTBufferQueueTransformTest : public BLASTBufferQueueTest { public: void test(uint32_t tr) { Loading Loading
libs/gui/BLASTBufferQueue.cpp +8 −0 Original line number Diff line number Diff line Loading @@ -600,6 +600,14 @@ public: return BufferQueueProducer::connect(new AsyncProducerListener(listener), api, producerControlledByApp, output); } int query(int what, int* value) override { if (what == NATIVE_WINDOW_QUEUES_TO_WINDOW_COMPOSER) { *value = 1; return NO_ERROR; } return BufferQueueProducer::query(what, value); } }; // Similar to BufferQueue::createBufferQueue but creates an adapter specific bufferqueue producer. Loading
libs/gui/Surface.cpp +4 −0 Original line number Diff line number Diff line Loading @@ -985,6 +985,10 @@ int Surface::query(int what, int* value) const { } break; case NATIVE_WINDOW_QUEUES_TO_WINDOW_COMPOSER: { status_t err = mGraphicBufferProducer->query(what, value); if (err == NO_ERROR) { return NO_ERROR; } if (composerService()->authenticateSurfaceTexture( mGraphicBufferProducer)) { *value = 1; Loading
libs/gui/tests/BLASTBufferQueue_test.cpp +13 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ #include <gui/FrameTimestamps.h> #include <gui/IGraphicBufferProducer.h> #include <gui/IProducerListener.h> #include <gui/Surface.h> #include <gui/SurfaceComposerClient.h> #include <gui/SyncScreenCaptureListener.h> #include <private/gui/ComposerService.h> Loading Loading @@ -515,6 +516,18 @@ TEST_F(BLASTBufferQueueTest, CustomProducerListener) { adapter.waitForCallbacks(); } TEST_F(BLASTBufferQueueTest, QueryNativeWindowQueuesToWindowComposer) { BLASTBufferQueueHelper adapter(mSurfaceControl, mDisplayWidth, mDisplayHeight); sp<android::Surface> surface = new Surface(adapter.getIGraphicBufferProducer()); ANativeWindow* nativeWindow = (ANativeWindow*)(surface.get()); int queuesToNativeWindow = 0; int err = nativeWindow->query(nativeWindow, NATIVE_WINDOW_QUEUES_TO_WINDOW_COMPOSER, &queuesToNativeWindow); ASSERT_EQ(NO_ERROR, err); ASSERT_EQ(queuesToNativeWindow, 1); } class BLASTBufferQueueTransformTest : public BLASTBufferQueueTest { public: void test(uint32_t tr) { Loading