Loading services/surfaceflinger/BufferLayer.h +2 −2 Original line number Diff line number Diff line Loading @@ -167,6 +167,8 @@ protected: // from GLES const uint32_t mTextureName; bool mRefreshPending{false}; private: // Returns true if this layer requires filtering bool needsFiltering() const; Loading @@ -184,8 +186,6 @@ private: // The texture used to draw the layer in GLES composition mode mutable renderengine::Texture mTexture; bool mRefreshPending{false}; Rect getBufferSize(const State& s) const override; }; Loading services/surfaceflinger/BufferQueueLayer.cpp +9 −4 Original line number Diff line number Diff line Loading @@ -352,6 +352,14 @@ void BufferQueueLayer::setHwcLayerBuffer(DisplayId displayId) { // Interface implementation for BufferLayerConsumer::ContentsChangedListener // ----------------------------------------------------------------------- void BufferQueueLayer::fakeVsync() { mRefreshPending = false; bool ignored = false; latchBuffer(ignored, systemTime(), Fence::NO_FENCE); usleep(16000); releasePendingBuffer(systemTime()); } void BufferQueueLayer::onFrameAvailable(const BufferItem& item) { // Add this buffer from our internal queue tracker { // Autolock scope Loading Loading @@ -390,10 +398,7 @@ void BufferQueueLayer::onFrameAvailable(const BufferItem& item) { // If this layer is orphaned, then we run a fake vsync pulse so that // dequeueBuffer doesn't block indefinitely. if (isRemovedFromCurrentState()) { bool ignored = false; latchBuffer(ignored, systemTime(), Fence::NO_FENCE); usleep(16000); releasePendingBuffer(systemTime()); fakeVsync(); } else { mFlinger->signalLayerUpdate(); } Loading services/surfaceflinger/BufferQueueLayer.h +2 −0 Original line number Diff line number Diff line Loading @@ -137,6 +137,8 @@ private: // thread-safe std::atomic<int32_t> mQueuedFrames{0}; std::atomic<bool> mSidebandStreamChanged{false}; void fakeVsync(); }; } // namespace android Loading
services/surfaceflinger/BufferLayer.h +2 −2 Original line number Diff line number Diff line Loading @@ -167,6 +167,8 @@ protected: // from GLES const uint32_t mTextureName; bool mRefreshPending{false}; private: // Returns true if this layer requires filtering bool needsFiltering() const; Loading @@ -184,8 +186,6 @@ private: // The texture used to draw the layer in GLES composition mode mutable renderengine::Texture mTexture; bool mRefreshPending{false}; Rect getBufferSize(const State& s) const override; }; Loading
services/surfaceflinger/BufferQueueLayer.cpp +9 −4 Original line number Diff line number Diff line Loading @@ -352,6 +352,14 @@ void BufferQueueLayer::setHwcLayerBuffer(DisplayId displayId) { // Interface implementation for BufferLayerConsumer::ContentsChangedListener // ----------------------------------------------------------------------- void BufferQueueLayer::fakeVsync() { mRefreshPending = false; bool ignored = false; latchBuffer(ignored, systemTime(), Fence::NO_FENCE); usleep(16000); releasePendingBuffer(systemTime()); } void BufferQueueLayer::onFrameAvailable(const BufferItem& item) { // Add this buffer from our internal queue tracker { // Autolock scope Loading Loading @@ -390,10 +398,7 @@ void BufferQueueLayer::onFrameAvailable(const BufferItem& item) { // If this layer is orphaned, then we run a fake vsync pulse so that // dequeueBuffer doesn't block indefinitely. if (isRemovedFromCurrentState()) { bool ignored = false; latchBuffer(ignored, systemTime(), Fence::NO_FENCE); usleep(16000); releasePendingBuffer(systemTime()); fakeVsync(); } else { mFlinger->signalLayerUpdate(); } Loading
services/surfaceflinger/BufferQueueLayer.h +2 −0 Original line number Diff line number Diff line Loading @@ -137,6 +137,8 @@ private: // thread-safe std::atomic<int32_t> mQueuedFrames{0}; std::atomic<bool> mSidebandStreamChanged{false}; void fakeVsync(); }; } // namespace android