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

Commit b5f40e59 authored by Dominik Laskowski's avatar Dominik Laskowski
Browse files

SF: Inline SurfaceFlinger::initializeDisplays

Bug: 150889228
Test: Boot
Change-Id: I92d42042196f5c67fc61b423853cc205aac81e97
parent 1686374d
Loading
Loading
Loading
Loading
+9 −14
Original line number Diff line number Diff line
@@ -497,14 +497,13 @@ void SurfaceFlinger::binderDied(const wp<IBinder>&) {
    // the window manager died on us. prepare its eulogy.
    mBootFinished = false;

    static_cast<void>(mScheduler->schedule([this]() FTL_FAKE_GUARD(kMainThreadContext) {
        // Sever the link to inputflinger since it's gone as well.
    static_cast<void>(mScheduler->schedule(
            [this] { mInputFlinger.clear(); }));
        mInputFlinger.clear();

    // restore initial conditions (default device unblank, etc)
        initializeDisplays();
    }));

    // restart the boot-animation
    startBootAnim();
}

@@ -873,7 +872,9 @@ void SurfaceFlinger::init() FTL_FAKE_GUARD(kMainThreadContext) {
    mDrawingState = mCurrentState;

    onActiveDisplayChangedLocked(nullptr, *display);
    initializeDisplays();

    static_cast<void>(mScheduler->schedule(
            [this]() FTL_FAKE_GUARD(kMainThreadContext) { initializeDisplays(); }));

    mPowerAdvisor->init();

@@ -5245,7 +5246,7 @@ void SurfaceFlinger::onHandleDestroyed(BBinder* handle, sp<Layer>& layer, uint32
    setTransactionFlags(eTransactionFlushNeeded);
}

void SurfaceFlinger::onInitializeDisplays() {
void SurfaceFlinger::initializeDisplays() {
    const auto display = FTL_FAKE_GUARD(mStateLock, getDefaultDisplayDeviceLocked());
    if (!display) return;

@@ -5292,12 +5293,6 @@ void SurfaceFlinger::onInitializeDisplays() {
    }
}

void SurfaceFlinger::initializeDisplays() {
    // Async since we may be called from the main thread.
    static_cast<void>(mScheduler->schedule(
            [this]() FTL_FAKE_GUARD(kMainThreadContext) { onInitializeDisplays(); }));
}

void SurfaceFlinger::setPowerModeInternal(const sp<DisplayDevice>& display, hal::PowerMode mode) {
    if (display->isVirtual()) {
        ALOGE("%s: Invalid operation on virtual display", __func__);
+1 −2
Original line number Diff line number Diff line
@@ -856,8 +856,7 @@ private:
     */

    // Called during boot, and restart after system_server death.
    void initializeDisplays();
    void onInitializeDisplays() REQUIRES(kMainThreadContext);
    void initializeDisplays() REQUIRES(kMainThreadContext);

    sp<const DisplayDevice> getDisplayDeviceLocked(const wp<IBinder>& displayToken) const
            REQUIRES(mStateLock) {
+3 −4
Original line number Diff line number Diff line
@@ -402,9 +402,8 @@ public:
    SurfaceFlinger *flinger() { return mFlinger.get(); }
    scheduler::TestableScheduler *scheduler() { return mScheduler; }

    // Allow reading display state without locking, as if called on the SF main thread.
    auto onInitializeDisplays() NO_THREAD_SAFETY_ANALYSIS {
        return mFlinger->onInitializeDisplays();
    void initializeDisplays() {
        FTL_FAKE_GUARD(kMainThreadContext, mFlinger->initializeDisplays());
    }

    void setGlobalShadowSettings(FuzzedDataProvider *fdp) {
@@ -542,7 +541,7 @@ public:
                mFlinger->createDisplay(String8(fdp->ConsumeRandomLengthString().c_str()),
                                        fdp->ConsumeBool());

        onInitializeDisplays();
        initializeDisplays();
        mFlinger->getPhysicalDisplayToken(physicalDisplayId);

        mFlinger->mStartPropertySetThread =
+1 −1
Original line number Diff line number Diff line
@@ -107,9 +107,9 @@ cc_test {
        "SurfaceFlinger_GetDisplayNativePrimariesTest.cpp",
        "SurfaceFlinger_HdrOutputControlTest.cpp",
        "SurfaceFlinger_HotplugTest.cpp",
        "SurfaceFlinger_InitializeDisplaysTest.cpp",
        "SurfaceFlinger_MultiDisplayPacesetterTest.cpp",
        "SurfaceFlinger_NotifyPowerBoostTest.cpp",
        "SurfaceFlinger_OnInitializeDisplaysTest.cpp",
        "SurfaceFlinger_PowerHintTest.cpp",
        "SurfaceFlinger_SetDisplayStateTest.cpp",
        "SurfaceFlinger_SetPowerModeInternalTest.cpp",
+3 −3
Original line number Diff line number Diff line
@@ -22,9 +22,9 @@
namespace android {
namespace {

class OnInitializeDisplaysTest : public DisplayTransactionTest {};
class InitializeDisplaysTest : public DisplayTransactionTest {};

TEST_F(OnInitializeDisplaysTest, onInitializeDisplaysSetsUpPrimaryDisplay) {
TEST_F(InitializeDisplaysTest, commitsPrimaryDisplay) {
    using Case = SimplePrimaryDisplayCase;

    // --------------------------------------------------------------------
@@ -52,7 +52,7 @@ TEST_F(OnInitializeDisplaysTest, onInitializeDisplaysSetsUpPrimaryDisplay) {
    // --------------------------------------------------------------------
    // Invocation

    mFlinger.onInitializeDisplays();
    FTL_FAKE_GUARD(kMainThreadContext, mFlinger.initializeDisplays());

    // --------------------------------------------------------------------
    // Postconditions
Loading