Loading include/ui/egl/android_natives.h +15 −0 Original line number Diff line number Diff line Loading @@ -110,6 +110,14 @@ enum { * conjunction with this query. */ NATIVE_WINDOW_QUEUES_TO_WINDOW_COMPOSER, /* Get the concrete type of a ANativeWindow. See below for the list of * possible return values. * * This query should not be used outside the Android framework and will * likely be removed in the near future. */ NATIVE_WINDOW_CONCRETE_TYPE, }; /* valid operations for the (*perform)() hook */ Loading Loading @@ -142,6 +150,13 @@ enum { NATIVE_WINDOW_TRANSFORM_ROT_270 = HAL_TRANSFORM_ROT_270, }; /* values returned by the NATIVE_WINDOW_CONCRETE_TYPE query */ enum { NATIVE_WINDOW_FRAMEBUFFER, // FramebufferNativeWindow NATIVE_WINDOW_SURFACE, // Surface NATIVE_WINDOW_SURFACE_TEXTURE_CLIENT, // SurfaceTextureClient }; struct ANativeWindow { #ifdef __cplusplus Loading libs/gui/SurfaceTextureClient.cpp +3 −0 Original line number Diff line number Diff line Loading @@ -160,6 +160,9 @@ int SurfaceTextureClient::query(int what, int* value) { // SurfaceTextureClient currently never queues frames to SurfaceFlinger. *value = 0; return NO_ERROR; case NATIVE_WINDOW_CONCRETE_TYPE: *value = NATIVE_WINDOW_SURFACE_TEXTURE_CLIENT; return NO_ERROR; } return BAD_VALUE; } Loading libs/gui/tests/SurfaceTextureClient_test.cpp +8 −0 Original line number Diff line number Diff line Loading @@ -44,4 +44,12 @@ TEST_F(SurfaceTextureClientTest, QueuesToWindowCompositorIsFalse) { EXPECT_EQ(0, result); } TEST_F(SurfaceTextureClientTest, ConcreteTypeIsSurfaceTextureClient) { sp<ANativeWindow> anw(mSTC); int result = -123; int err = anw->query(anw.get(), NATIVE_WINDOW_CONCRETE_TYPE, &result); EXPECT_EQ(NO_ERROR, err); EXPECT_EQ(NATIVE_WINDOW_SURFACE_TEXTURE_CLIENT, result); } } libs/surfaceflinger_client/Surface.cpp +5 −1 Original line number Diff line number Diff line Loading @@ -712,11 +712,15 @@ int Surface::query(int what, int* value) case NATIVE_WINDOW_MIN_UNDEQUEUED_BUFFERS: *value = MIN_UNDEQUEUED_BUFFERS; return NO_ERROR; case NATIVE_WINDOW_QUEUES_TO_WINDOW_COMPOSER: case NATIVE_WINDOW_QUEUES_TO_WINDOW_COMPOSER: { sp<ISurfaceComposer> sf(ComposerService::getComposerService()); *value = sf->authenticateSurface(mSurface) ? 1 : 0; return NO_ERROR; } case NATIVE_WINDOW_CONCRETE_TYPE: *value = NATIVE_WINDOW_SURFACE; return NO_ERROR; } return BAD_VALUE; } Loading libs/surfaceflinger_client/tests/Surface_test.cpp +8 −0 Original line number Diff line number Diff line Loading @@ -130,4 +130,12 @@ TEST_F(SurfaceTest, ScreenshotsOfProtectedBuffersFail) { ASSERT_TRUE(heap != NULL); } TEST_F(SurfaceTest, ConcreteTypeIsSurface) { sp<ANativeWindow> anw(mSurface); int result = -123; int err = anw->query(anw.get(), NATIVE_WINDOW_CONCRETE_TYPE, &result); EXPECT_EQ(NO_ERROR, err); EXPECT_EQ(NATIVE_WINDOW_SURFACE, result); } } Loading
include/ui/egl/android_natives.h +15 −0 Original line number Diff line number Diff line Loading @@ -110,6 +110,14 @@ enum { * conjunction with this query. */ NATIVE_WINDOW_QUEUES_TO_WINDOW_COMPOSER, /* Get the concrete type of a ANativeWindow. See below for the list of * possible return values. * * This query should not be used outside the Android framework and will * likely be removed in the near future. */ NATIVE_WINDOW_CONCRETE_TYPE, }; /* valid operations for the (*perform)() hook */ Loading Loading @@ -142,6 +150,13 @@ enum { NATIVE_WINDOW_TRANSFORM_ROT_270 = HAL_TRANSFORM_ROT_270, }; /* values returned by the NATIVE_WINDOW_CONCRETE_TYPE query */ enum { NATIVE_WINDOW_FRAMEBUFFER, // FramebufferNativeWindow NATIVE_WINDOW_SURFACE, // Surface NATIVE_WINDOW_SURFACE_TEXTURE_CLIENT, // SurfaceTextureClient }; struct ANativeWindow { #ifdef __cplusplus Loading
libs/gui/SurfaceTextureClient.cpp +3 −0 Original line number Diff line number Diff line Loading @@ -160,6 +160,9 @@ int SurfaceTextureClient::query(int what, int* value) { // SurfaceTextureClient currently never queues frames to SurfaceFlinger. *value = 0; return NO_ERROR; case NATIVE_WINDOW_CONCRETE_TYPE: *value = NATIVE_WINDOW_SURFACE_TEXTURE_CLIENT; return NO_ERROR; } return BAD_VALUE; } Loading
libs/gui/tests/SurfaceTextureClient_test.cpp +8 −0 Original line number Diff line number Diff line Loading @@ -44,4 +44,12 @@ TEST_F(SurfaceTextureClientTest, QueuesToWindowCompositorIsFalse) { EXPECT_EQ(0, result); } TEST_F(SurfaceTextureClientTest, ConcreteTypeIsSurfaceTextureClient) { sp<ANativeWindow> anw(mSTC); int result = -123; int err = anw->query(anw.get(), NATIVE_WINDOW_CONCRETE_TYPE, &result); EXPECT_EQ(NO_ERROR, err); EXPECT_EQ(NATIVE_WINDOW_SURFACE_TEXTURE_CLIENT, result); } }
libs/surfaceflinger_client/Surface.cpp +5 −1 Original line number Diff line number Diff line Loading @@ -712,11 +712,15 @@ int Surface::query(int what, int* value) case NATIVE_WINDOW_MIN_UNDEQUEUED_BUFFERS: *value = MIN_UNDEQUEUED_BUFFERS; return NO_ERROR; case NATIVE_WINDOW_QUEUES_TO_WINDOW_COMPOSER: case NATIVE_WINDOW_QUEUES_TO_WINDOW_COMPOSER: { sp<ISurfaceComposer> sf(ComposerService::getComposerService()); *value = sf->authenticateSurface(mSurface) ? 1 : 0; return NO_ERROR; } case NATIVE_WINDOW_CONCRETE_TYPE: *value = NATIVE_WINDOW_SURFACE; return NO_ERROR; } return BAD_VALUE; } Loading
libs/surfaceflinger_client/tests/Surface_test.cpp +8 −0 Original line number Diff line number Diff line Loading @@ -130,4 +130,12 @@ TEST_F(SurfaceTest, ScreenshotsOfProtectedBuffersFail) { ASSERT_TRUE(heap != NULL); } TEST_F(SurfaceTest, ConcreteTypeIsSurface) { sp<ANativeWindow> anw(mSurface); int result = -123; int err = anw->query(anw.get(), NATIVE_WINDOW_CONCRETE_TYPE, &result); EXPECT_EQ(NO_ERROR, err); EXPECT_EQ(NATIVE_WINDOW_SURFACE, result); } }