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

Commit f48bef8e authored by Jim Shargo's avatar Jim Shargo
Browse files

tests: Eliminate annoying and noisy CompositionEngine errors

These tests create surfaces for virtual displays, but delete the
consumer side of the BQ before they attach, causing errors in SF that
spam logs and seem confusing.

In this change, we keep the consumers around for the lifetime of the
virtual displays.

Bug: 374973152
Flag: EXEMPT tests
Test: atest
BYPASS_IGBP_IGBC_API_REASON=fixing old tests

Change-Id: I70943093652516b8b083a8c46c82d9ddbea56695
parent a2ab5be9
Loading
Loading
Loading
Loading
+12 −2
Original line number Diff line number Diff line
@@ -34,6 +34,8 @@
#include <binder/Parcel.h>
#include <binder/ProcessState.h>

#include <gui/IConsumerListener.h>
#include <gui/IGraphicBufferConsumer.h>
#include <gui/ISurfaceComposer.h>
#include <gui/Surface.h>
#include <gui/SurfaceComposerClient.h>
@@ -1214,7 +1216,15 @@ public:
        BufferQueue::createBufferQueue(&producer, &consumer);
        consumer->setConsumerName(String8("Virtual disp consumer (MultiDisplayTests)"));
        consumer->setDefaultBufferSize(width, height);
        mProducers.push_back(producer);

        class StubConsumerListener : public BnConsumerListener {
            virtual void onFrameAvailable(const BufferItem&) override {}
            virtual void onBuffersReleased() override {}
            virtual void onSidebandStreamChanged() override {}
        };

        consumer->consumerConnect(sp<StubConsumerListener>::make(), true);
        mBufferQueues.push_back({consumer, producer});

        std::string name = "VirtualDisplay";
        name += std::to_string(mVirtualDisplays.size());
@@ -1231,7 +1241,7 @@ public:
    }

    std::vector<sp<IBinder>> mVirtualDisplays;
    std::vector<sp<IGraphicBufferProducer>> mProducers;
    std::vector<std::tuple<sp<IGraphicBufferConsumer>, sp<IGraphicBufferProducer>>> mBufferQueues;
};

TEST_F(MultiDisplayTests, drop_touch_if_layer_on_invalid_display) {
+13 −5
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@
#pragma clang diagnostic ignored "-Wconversion"

#include <common/FlagManager.h>
#include <gui/IConsumerListener.h>
#include <ui/DisplayState.h>

#include "LayerTransactionTest.h"
@@ -45,11 +46,17 @@ protected:
        SurfaceComposerClient::getDisplayState(mMainDisplay, &mMainDisplayState);
        SurfaceComposerClient::getActiveDisplayMode(mMainDisplay, &mMainDisplayMode);

        sp<IGraphicBufferConsumer> consumer;
        BufferQueue::createBufferQueue(&mProducer, &consumer);
        consumer->setConsumerName(String8("Virtual disp consumer (MultiDisplayLayerBounds)"));
        consumer->setDefaultBufferSize(mMainDisplayMode.resolution.getWidth(),
        BufferQueue::createBufferQueue(&mProducer, &mConsumer);
        mConsumer->setConsumerName(String8("Virtual disp consumer (MultiDisplayLayerBounds)"));
        mConsumer->setDefaultBufferSize(mMainDisplayMode.resolution.getWidth(),
                                        mMainDisplayMode.resolution.getHeight());

        class StubConsumerListener : public BnConsumerListener {
            virtual void onFrameAvailable(const BufferItem&) override {}
            virtual void onBuffersReleased() override {}
            virtual void onSidebandStreamChanged() override {}
        };
        mConsumer->consumerConnect(sp<StubConsumerListener>::make(), true);
    }

    virtual void TearDown() {
@@ -92,6 +99,7 @@ protected:
    sp<IBinder> mMainDisplay;
    PhysicalDisplayId mMainDisplayId;
    sp<IBinder> mVirtualDisplay;
    sp<IGraphicBufferConsumer> mConsumer;
    sp<IGraphicBufferProducer> mProducer;
    sp<SurfaceControl> mColorLayer;
    Color mExpectedColor = {63, 63, 195, 255};