diff options
| -rw-r--r-- | services/surfaceflinger/DispSync.cpp | 14 | ||||
| -rw-r--r-- | services/surfaceflinger/DispSync.h | 2 | ||||
| -rw-r--r-- | services/surfaceflinger/SurfaceFlinger.cpp | 2 |
3 files changed, 12 insertions, 6 deletions
diff --git a/services/surfaceflinger/DispSync.cpp b/services/surfaceflinger/DispSync.cpp index bd9b8aafcd..ea048397d0 100644 --- a/services/surfaceflinger/DispSync.cpp +++ b/services/surfaceflinger/DispSync.cpp @@ -377,11 +377,16 @@ private: DispSync::DispSync(const char* name) : mName(name), mRefreshSkipCount(0), - mThread(new DispSyncThread(name)), - mIgnorePresentFences(!SurfaceFlinger::hasSyncFramework){ + mThread(new DispSyncThread(name)) { +} + +DispSync::~DispSync() {} - mPresentTimeOffset = SurfaceFlinger::dispSyncPresentTimeOffset; +void DispSync::init(bool hasSyncFramework, int64_t dispSyncPresentTimeOffset) { + mIgnorePresentFences = !hasSyncFramework; + mPresentTimeOffset = dispSyncPresentTimeOffset; mThread->run("DispSync", PRIORITY_URGENT_DISPLAY + PRIORITY_MORE_FAVORABLE); + // set DispSync to SCHED_FIFO to minimize jitter struct sched_param param = {0}; param.sched_priority = 2; @@ -389,7 +394,6 @@ DispSync::DispSync(const char* name) : ALOGE("Couldn't set SCHED_FIFO for DispSyncThread"); } - reset(); beginResync(); @@ -405,8 +409,6 @@ DispSync::DispSync(const char* name) : } } -DispSync::~DispSync() {} - void DispSync::reset() { Mutex::Autolock lock(mMutex); diff --git a/services/surfaceflinger/DispSync.h b/services/surfaceflinger/DispSync.h index 82ae79590a..3c34fb08a4 100644 --- a/services/surfaceflinger/DispSync.h +++ b/services/surfaceflinger/DispSync.h @@ -55,6 +55,8 @@ public: explicit DispSync(const char* name); ~DispSync(); + void init(bool hasSyncFramework, int64_t dispSyncPresentTimeOffset); + // reset clears the resync samples and error value. void reset(); diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index 63f260a958..d435dbc3c3 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -195,6 +195,8 @@ SurfaceFlinger::SurfaceFlinger() hasWideColorDisplay = getBool<ISurfaceFlingerConfigs, &ISurfaceFlingerConfigs::hasWideColorDisplay>(false); + mPrimaryDispSync.init(hasSyncFramework, dispSyncPresentTimeOffset); + // debugging stuff... char value[PROPERTY_VALUE_MAX]; |