Loading services/surfaceflinger/Scheduler/DispSyncSource.cpp +12 −0 Original line number Diff line number Diff line Loading @@ -85,7 +85,19 @@ void DispSyncSource::setPhaseOffset(nsecs_t phaseOffset) { } } void DispSyncSource::pauseVsyncCallback(bool pause) { std::lock_guard lock(mVsyncMutex); mCallbackPaused = pause; } void DispSyncSource::onDispSyncEvent(nsecs_t when) { { std::lock_guard lock(mVsyncMutex); if (mCallbackPaused) { return; } } VSyncSource::Callback* callback; { std::lock_guard lock(mCallbackMutex); Loading services/surfaceflinger/Scheduler/DispSyncSource.h +2 −0 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ public: void setVSyncEnabled(bool enable) override; void setCallback(VSyncSource::Callback* callback) override; void setPhaseOffset(nsecs_t phaseOffset) override; void pauseVsyncCallback(bool pause) override; private: // The following method is the implementation of the DispSync::Callback. Loading @@ -53,6 +54,7 @@ private: std::mutex mVsyncMutex; nsecs_t mPhaseOffset GUARDED_BY(mVsyncMutex); bool mEnabled GUARDED_BY(mVsyncMutex) = false; bool mCallbackPaused GUARDED_BY(mVsyncMutex) = false; }; } // namespace android No newline at end of file services/surfaceflinger/Scheduler/EventThread.cpp +6 −0 Original line number Diff line number Diff line Loading @@ -203,6 +203,12 @@ void EventThread::setPhaseOffset(nsecs_t phaseOffset) { mVSyncSource->setPhaseOffset(phaseOffset); } void EventThread::pauseVsyncCallback(bool pause) { std::lock_guard<std::mutex> lock(mMutex); ATRACE_INT("vsyncPaused", pause); mVSyncSource->pauseVsyncCallback(pause); } sp<EventThreadConnection> EventThread::createEventConnection( ResyncCallback resyncCallback, ResetIdleTimerCallback resetIdleTimerCallback) const { return new EventThreadConnection(const_cast<EventThread*>(this), std::move(resyncCallback), Loading services/surfaceflinger/Scheduler/EventThread.h +7 −0 Original line number Diff line number Diff line Loading @@ -66,6 +66,9 @@ public: virtual void setVSyncEnabled(bool enable) = 0; virtual void setCallback(Callback* callback) = 0; virtual void setPhaseOffset(nsecs_t phaseOffset) = 0; // pause/resume vsync callback generation virtual void pauseVsyncCallback(bool pause) = 0; }; class EventThreadConnection : public BnDisplayEventConnection { Loading Loading @@ -119,6 +122,8 @@ public: // Requests the next vsync. If resetIdleTimer is set to true, it resets the idle timer. virtual void requestNextVsync(const sp<EventThreadConnection>& connection, bool resetIdleTimer) = 0; virtual void pauseVsyncCallback(bool pause) = 0; }; namespace impl { Loading Loading @@ -152,6 +157,8 @@ public: void setPhaseOffset(nsecs_t phaseOffset) override; void pauseVsyncCallback(bool pause) override; private: friend EventThreadTest; Loading services/surfaceflinger/Scheduler/InjectVSyncSource.h +1 −0 Original line number Diff line number Diff line Loading @@ -44,6 +44,7 @@ public: void setVSyncEnabled(bool) override {} void setPhaseOffset(nsecs_t) override {} void pauseVsyncCallback(bool) {} private: std::mutex mCallbackMutex; Loading Loading
services/surfaceflinger/Scheduler/DispSyncSource.cpp +12 −0 Original line number Diff line number Diff line Loading @@ -85,7 +85,19 @@ void DispSyncSource::setPhaseOffset(nsecs_t phaseOffset) { } } void DispSyncSource::pauseVsyncCallback(bool pause) { std::lock_guard lock(mVsyncMutex); mCallbackPaused = pause; } void DispSyncSource::onDispSyncEvent(nsecs_t when) { { std::lock_guard lock(mVsyncMutex); if (mCallbackPaused) { return; } } VSyncSource::Callback* callback; { std::lock_guard lock(mCallbackMutex); Loading
services/surfaceflinger/Scheduler/DispSyncSource.h +2 −0 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ public: void setVSyncEnabled(bool enable) override; void setCallback(VSyncSource::Callback* callback) override; void setPhaseOffset(nsecs_t phaseOffset) override; void pauseVsyncCallback(bool pause) override; private: // The following method is the implementation of the DispSync::Callback. Loading @@ -53,6 +54,7 @@ private: std::mutex mVsyncMutex; nsecs_t mPhaseOffset GUARDED_BY(mVsyncMutex); bool mEnabled GUARDED_BY(mVsyncMutex) = false; bool mCallbackPaused GUARDED_BY(mVsyncMutex) = false; }; } // namespace android No newline at end of file
services/surfaceflinger/Scheduler/EventThread.cpp +6 −0 Original line number Diff line number Diff line Loading @@ -203,6 +203,12 @@ void EventThread::setPhaseOffset(nsecs_t phaseOffset) { mVSyncSource->setPhaseOffset(phaseOffset); } void EventThread::pauseVsyncCallback(bool pause) { std::lock_guard<std::mutex> lock(mMutex); ATRACE_INT("vsyncPaused", pause); mVSyncSource->pauseVsyncCallback(pause); } sp<EventThreadConnection> EventThread::createEventConnection( ResyncCallback resyncCallback, ResetIdleTimerCallback resetIdleTimerCallback) const { return new EventThreadConnection(const_cast<EventThread*>(this), std::move(resyncCallback), Loading
services/surfaceflinger/Scheduler/EventThread.h +7 −0 Original line number Diff line number Diff line Loading @@ -66,6 +66,9 @@ public: virtual void setVSyncEnabled(bool enable) = 0; virtual void setCallback(Callback* callback) = 0; virtual void setPhaseOffset(nsecs_t phaseOffset) = 0; // pause/resume vsync callback generation virtual void pauseVsyncCallback(bool pause) = 0; }; class EventThreadConnection : public BnDisplayEventConnection { Loading Loading @@ -119,6 +122,8 @@ public: // Requests the next vsync. If resetIdleTimer is set to true, it resets the idle timer. virtual void requestNextVsync(const sp<EventThreadConnection>& connection, bool resetIdleTimer) = 0; virtual void pauseVsyncCallback(bool pause) = 0; }; namespace impl { Loading Loading @@ -152,6 +157,8 @@ public: void setPhaseOffset(nsecs_t phaseOffset) override; void pauseVsyncCallback(bool pause) override; private: friend EventThreadTest; Loading
services/surfaceflinger/Scheduler/InjectVSyncSource.h +1 −0 Original line number Diff line number Diff line Loading @@ -44,6 +44,7 @@ public: void setVSyncEnabled(bool) override {} void setPhaseOffset(nsecs_t) override {} void pauseVsyncCallback(bool) {} private: std::mutex mCallbackMutex; Loading