diff options
| author | 2020-06-22 18:50:21 +0000 | |
|---|---|---|
| committer | 2020-06-22 18:50:21 +0000 | |
| commit | 440cf9ffe58d77afa94d2d77f66a7e9afe743c5e (patch) | |
| tree | e01968e3b27b181fd4c58a51ed44068c2f41093e | |
| parent | 48ebb5bfe1b434a8b9981e045e015907633956cf (diff) | |
| parent | 4524ce518978310b58ccb13c1fc7438f7c71819c (diff) | |
Merge "libgui: align the Surface default mMaxBufferCount value with BufferQueue" into rvc-dev am: 4524ce5189
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/native/+/11931585
Change-Id: Ie2f8b07fe259fe9afcd0094ea8006084133e83db
| -rw-r--r-- | libs/gui/Surface.cpp | 3 | ||||
| -rw-r--r-- | libs/gui/tests/Surface_test.cpp | 26 |
2 files changed, 28 insertions, 1 deletions
diff --git a/libs/gui/Surface.cpp b/libs/gui/Surface.cpp index 2bf8ff7581..cf269b33ba 100644 --- a/libs/gui/Surface.cpp +++ b/libs/gui/Surface.cpp @@ -110,7 +110,7 @@ Surface::Surface(const sp<IGraphicBufferProducer>& bufferProducer, bool controll mConnectedToCpu = false; mProducerControlledByApp = controlledByApp; mSwapIntervalZero = false; - mMaxBufferCount = 0; + mMaxBufferCount = NUM_BUFFER_SLOTS; } Surface::~Surface() { @@ -1585,6 +1585,7 @@ int Surface::disconnect(int api, IGraphicBufferProducer::DisconnectMode mode) { mStickyTransform = 0; mAutoPrerotation = false; mEnableFrameTimestamps = false; + mMaxBufferCount = NUM_BUFFER_SLOTS; if (api == NATIVE_WINDOW_API_CPU) { mConnectedToCpu = false; diff --git a/libs/gui/tests/Surface_test.cpp b/libs/gui/tests/Surface_test.cpp index c2b4ef93aa..9906166c67 100644 --- a/libs/gui/tests/Surface_test.cpp +++ b/libs/gui/tests/Surface_test.cpp @@ -30,6 +30,7 @@ #include <gui/SurfaceComposerClient.h> #include <inttypes.h> #include <private/gui/ComposerService.h> +#include <ui/BufferQueueDefs.h> #include <ui/Rect.h> #include <utils/String8.h> @@ -1974,4 +1975,29 @@ TEST_F(SurfaceTest, DequeueWithConsumerDrivenSize) { ASSERT_EQ(NO_ERROR, window->cancelBuffer(window.get(), buffer, fence)); } +TEST_F(SurfaceTest, DefaultMaxBufferCountSetAndUpdated) { + sp<IGraphicBufferProducer> producer; + sp<IGraphicBufferConsumer> consumer; + BufferQueue::createBufferQueue(&producer, &consumer); + + sp<DummyConsumer> dummyConsumer(new DummyConsumer); + consumer->consumerConnect(dummyConsumer, false); + + sp<Surface> surface = new Surface(producer); + sp<ANativeWindow> window(surface); + + int count = -1; + ASSERT_EQ(NO_ERROR, window->query(window.get(), NATIVE_WINDOW_MAX_BUFFER_COUNT, &count)); + EXPECT_EQ(BufferQueueDefs::NUM_BUFFER_SLOTS, count); + + consumer->setMaxBufferCount(10); + ASSERT_EQ(NO_ERROR, native_window_api_connect(window.get(), NATIVE_WINDOW_API_CPU)); + EXPECT_EQ(NO_ERROR, window->query(window.get(), NATIVE_WINDOW_MAX_BUFFER_COUNT, &count)); + EXPECT_EQ(10, count); + + ASSERT_EQ(NO_ERROR, native_window_api_disconnect(window.get(), NATIVE_WINDOW_API_CPU)); + ASSERT_EQ(NO_ERROR, window->query(window.get(), NATIVE_WINDOW_MAX_BUFFER_COUNT, &count)); + EXPECT_EQ(BufferQueueDefs::NUM_BUFFER_SLOTS, count); +} + } // namespace android |