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

Commit 379adc10 authored by Lloyd Pique's avatar Lloyd Pique
Browse files

SF: Separate EventControlThread into interface and impl

Test: Builds
Bug: 74827900
Change-Id: Ib79503860bf9409cc71d98e2e845ffaff114fbb1
parent e98c4170
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -26,6 +26,10 @@

namespace android {

EventControlThread::~EventControlThread() = default;

namespace impl {

EventControlThread::EventControlThread(EventControlThread::SetVSyncEnabledFunction function)
      : mSetVSyncEnabled(function) {
    pthread_setname_np(mThread.native_handle(), "EventControlThread");
@@ -67,4 +71,5 @@ void EventControlThread::threadMain() NO_THREAD_SAFETY_ANALYSIS {
    }
}

} // namespace impl
} // namespace android
+13 −2
Original line number Diff line number Diff line
@@ -16,8 +16,8 @@

#pragma once

#include <cstddef>
#include <condition_variable>
#include <cstddef>
#include <functional>
#include <mutex>
#include <thread>
@@ -29,13 +29,23 @@ namespace android {
class SurfaceFlinger;

class EventControlThread {
public:
    virtual ~EventControlThread();

    virtual void setVsyncEnabled(bool enabled) = 0;
};

namespace impl {

class EventControlThread final : public android::EventControlThread {
public:
    using SetVSyncEnabledFunction = std::function<void(bool)>;

    explicit EventControlThread(SetVSyncEnabledFunction function);
    ~EventControlThread();

    void setVsyncEnabled(bool enabled);
    // EventControlThread implementation
    void setVsyncEnabled(bool enabled) override;

private:
    void threadMain();
@@ -51,4 +61,5 @@ private:
    std::thread mThread{&EventControlThread::threadMain, this};
};

} // namespace impl
} // namespace android
+2 −3
Original line number Diff line number Diff line
@@ -633,9 +633,8 @@ void SurfaceFlinger::init() {
        }
    }

    mEventControlThread = std::make_unique<EventControlThread>([this](bool enabled) {
        setVsyncEnabled(HWC_DISPLAY_PRIMARY, enabled);
    });
    mEventControlThread = std::make_unique<impl::EventControlThread>(
            [this](bool enabled) { setVsyncEnabled(HWC_DISPLAY_PRIMARY, enabled); });

    // initialize our drawing state
    mDrawingState = mCurrentState;