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

Commit 12eb4237 authored by Lloyd Pique's avatar Lloyd Pique
Browse files

SF: Abstract out buffer queue creation

Modifies SurfaceFlinger so that the type of the buffer queue
producer/consumer pair produced for framebuffers can be changed at
runtime.

Test: Builds
Bug: None
Change-Id: If108059c43e5c0d03de9645966d9b8eca2b9ed16
parent 8c07c336
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -193,8 +193,8 @@ SurfaceFlinger::SurfaceFlinger()
        mHasPoweredOff(false),
        mNumLayers(0),
        mVrFlingerRequestsDisplay(false),
        mMainThreadId(std::this_thread::get_id())
{
        mMainThreadId(std::this_thread::get_id()),
        mCreateBufferQueue(&BufferQueue::createBufferQueue) {
    ALOGI("SurfaceFlinger is starting");

    vsyncPhaseOffsetNs = getInt64< ISurfaceFlingerConfigs,
@@ -2213,7 +2213,7 @@ void SurfaceFlinger::processDisplayChangesLocked() {
                sp<IGraphicBufferProducer> producer;
                sp<IGraphicBufferProducer> bqProducer;
                sp<IGraphicBufferConsumer> bqConsumer;
                BufferQueue::createBufferQueue(&bqProducer, &bqConsumer);
                mCreateBufferQueue(&bqProducer, &bqConsumer, false);

                int32_t hwcId = -1;
                if (state.isVirtualDisplay()) {
+8 −0
Original line number Diff line number Diff line
@@ -87,6 +87,8 @@ class ColorLayer;
class DisplayEventConnection;
class EventControlThread;
class EventThread;
class IGraphicBufferConsumer;
class IGraphicBufferProducer;
class InjectVSyncSource;
class Layer;
class Surface;
@@ -822,6 +824,12 @@ private:
    float mSaturation = 1.0f;
    bool mForceNativeColorMode = false;

    using CreateBufferQueueFunction =
            std::function<void(sp<IGraphicBufferProducer>* /* outProducer */,
                               sp<IGraphicBufferConsumer>* /* outConsumer */,
                               bool /* consumerIsSurfaceFlinger */)>;
    CreateBufferQueueFunction mCreateBufferQueue;

    SurfaceFlingerBE mBE;
};
}; // namespace android