Loading libs/gui/BLASTBufferQueue.cpp +7 −4 Original line number Diff line number Diff line Loading @@ -289,6 +289,11 @@ void BLASTBufferQueue::processNextBufferLocked(bool useNextTransaction) { t->setDesiredPresentTime(bufferItem.mTimestamp); t->setFrameNumber(mSurfaceControl, bufferItem.mFrameNumber); if (!mNextFrameTimelineVsyncIdQueue.empty()) { t->setFrameTimelineVsync(mSurfaceControl, mNextFrameTimelineVsyncIdQueue.front()); mNextFrameTimelineVsyncIdQueue.pop(); } if (mAutoRefresh != bufferItem.mAutoRefresh) { t->setAutoRefresh(mSurfaceControl, bufferItem.mAutoRefresh); mAutoRefresh = bufferItem.mAutoRefresh; Loading Loading @@ -417,10 +422,8 @@ status_t BLASTBufferQueue::setFrameRate(float frameRate, int8_t compatibility, status_t BLASTBufferQueue::setFrameTimelineVsync(int64_t frameTimelineVsyncId) { std::unique_lock _lock{mMutex}; SurfaceComposerClient::Transaction t; return t.setFrameTimelineVsync(mSurfaceControl, frameTimelineVsyncId) .apply(); mNextFrameTimelineVsyncIdQueue.push(frameTimelineVsyncId); return OK; } sp<Surface> BLASTBufferQueue::getSurface(bool includeSurfaceControlHandle) { Loading libs/gui/include/gui/BLASTBufferQueue.h +3 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ #include <system/window.h> #include <thread> #include <queue> namespace android { Loading Loading @@ -143,6 +144,8 @@ private: // should acquire the next frame as soon as it can and not wait for a frame to become available. // This is only relevant for shared buffer mode. bool mAutoRefresh GUARDED_BY(mMutex) = false; std::queue<int64_t> mNextFrameTimelineVsyncIdQueue GUARDED_BY(mMutex); }; } // namespace android Loading Loading
libs/gui/BLASTBufferQueue.cpp +7 −4 Original line number Diff line number Diff line Loading @@ -289,6 +289,11 @@ void BLASTBufferQueue::processNextBufferLocked(bool useNextTransaction) { t->setDesiredPresentTime(bufferItem.mTimestamp); t->setFrameNumber(mSurfaceControl, bufferItem.mFrameNumber); if (!mNextFrameTimelineVsyncIdQueue.empty()) { t->setFrameTimelineVsync(mSurfaceControl, mNextFrameTimelineVsyncIdQueue.front()); mNextFrameTimelineVsyncIdQueue.pop(); } if (mAutoRefresh != bufferItem.mAutoRefresh) { t->setAutoRefresh(mSurfaceControl, bufferItem.mAutoRefresh); mAutoRefresh = bufferItem.mAutoRefresh; Loading Loading @@ -417,10 +422,8 @@ status_t BLASTBufferQueue::setFrameRate(float frameRate, int8_t compatibility, status_t BLASTBufferQueue::setFrameTimelineVsync(int64_t frameTimelineVsyncId) { std::unique_lock _lock{mMutex}; SurfaceComposerClient::Transaction t; return t.setFrameTimelineVsync(mSurfaceControl, frameTimelineVsyncId) .apply(); mNextFrameTimelineVsyncIdQueue.push(frameTimelineVsyncId); return OK; } sp<Surface> BLASTBufferQueue::getSurface(bool includeSurfaceControlHandle) { Loading
libs/gui/include/gui/BLASTBufferQueue.h +3 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ #include <system/window.h> #include <thread> #include <queue> namespace android { Loading Loading @@ -143,6 +144,8 @@ private: // should acquire the next frame as soon as it can and not wait for a frame to become available. // This is only relevant for shared buffer mode. bool mAutoRefresh GUARDED_BY(mMutex) = false; std::queue<int64_t> mNextFrameTimelineVsyncIdQueue GUARDED_BY(mMutex); }; } // namespace android Loading