Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c134a6dd authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "libgui: align the Surface default mMaxBufferCount value with...

Merge "libgui: align the Surface default mMaxBufferCount value with BufferQueue" into rvc-dev am: 4524ce51 am: 7cf6872c am: 7cd06133

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/native/+/11931585

Change-Id: I965496749ad635fadd0cc886024d94d89f173841
parents 18fedc09 7cd06133
Loading
Loading
Loading
Loading
+2 −1
Original line number Original line Diff line number Diff line
@@ -110,7 +110,7 @@ Surface::Surface(const sp<IGraphicBufferProducer>& bufferProducer, bool controll
    mConnectedToCpu = false;
    mConnectedToCpu = false;
    mProducerControlledByApp = controlledByApp;
    mProducerControlledByApp = controlledByApp;
    mSwapIntervalZero = false;
    mSwapIntervalZero = false;
    mMaxBufferCount = 0;
    mMaxBufferCount = NUM_BUFFER_SLOTS;
}
}


Surface::~Surface() {
Surface::~Surface() {
@@ -1585,6 +1585,7 @@ int Surface::disconnect(int api, IGraphicBufferProducer::DisconnectMode mode) {
        mStickyTransform = 0;
        mStickyTransform = 0;
        mAutoPrerotation = false;
        mAutoPrerotation = false;
        mEnableFrameTimestamps = false;
        mEnableFrameTimestamps = false;
        mMaxBufferCount = NUM_BUFFER_SLOTS;


        if (api == NATIVE_WINDOW_API_CPU) {
        if (api == NATIVE_WINDOW_API_CPU) {
            mConnectedToCpu = false;
            mConnectedToCpu = false;
+26 −0
Original line number Original line Diff line number Diff line
@@ -30,6 +30,7 @@
#include <gui/SurfaceComposerClient.h>
#include <gui/SurfaceComposerClient.h>
#include <inttypes.h>
#include <inttypes.h>
#include <private/gui/ComposerService.h>
#include <private/gui/ComposerService.h>
#include <ui/BufferQueueDefs.h>
#include <ui/Rect.h>
#include <ui/Rect.h>
#include <utils/String8.h>
#include <utils/String8.h>


@@ -1974,4 +1975,29 @@ TEST_F(SurfaceTest, DequeueWithConsumerDrivenSize) {
    ASSERT_EQ(NO_ERROR, window->cancelBuffer(window.get(), buffer, fence));
    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
} // namespace android