Loading services/surfaceflinger/BufferStateLayer.cpp +3 −2 Original line number Diff line number Diff line Loading @@ -125,9 +125,10 @@ bool BufferStateLayer::shouldPresentNow(nsecs_t /*expectedPresentTime*/) const { bool BufferStateLayer::willPresentCurrentTransaction() const { // Returns true if the most recent Transaction applied to CurrentState will be presented. return getSidebandStreamChanged() || getAutoRefresh() || return (getSidebandStreamChanged() || getAutoRefresh() || (mCurrentState.modified && (mCurrentState.buffer != nullptr || mCurrentState.bgColorLayer != nullptr)); (mCurrentState.buffer != nullptr || mCurrentState.bgColorLayer != nullptr))) && !mLayerDetached; } void BufferStateLayer::pushPendingState() { Loading services/surfaceflinger/Layer.cpp +9 −0 Original line number Diff line number Diff line Loading @@ -780,6 +780,15 @@ uint32_t Layer::doTransaction(uint32_t flags) { ATRACE_CALL(); if (mLayerDetached) { // Ensure BLAST buffer callbacks are processed. // detachChildren and mLayerDetached were implemented to avoid geometry updates // to layers in the cases of animation. For BufferQueue layers buffers are still // consumed as normal. This is useful as otherwise the client could get hung // inevitably waiting on a buffer to return. We recreate this semantic for BufferQueue // even though it is a little consistent. detachChildren is shortly slated for removal // by the hierarchy mirroring work so we don't need to worry about it too much. mDrawingState.callbackHandles = mCurrentState.callbackHandles; mCurrentState.callbackHandles = {}; return flags; } Loading Loading
services/surfaceflinger/BufferStateLayer.cpp +3 −2 Original line number Diff line number Diff line Loading @@ -125,9 +125,10 @@ bool BufferStateLayer::shouldPresentNow(nsecs_t /*expectedPresentTime*/) const { bool BufferStateLayer::willPresentCurrentTransaction() const { // Returns true if the most recent Transaction applied to CurrentState will be presented. return getSidebandStreamChanged() || getAutoRefresh() || return (getSidebandStreamChanged() || getAutoRefresh() || (mCurrentState.modified && (mCurrentState.buffer != nullptr || mCurrentState.bgColorLayer != nullptr)); (mCurrentState.buffer != nullptr || mCurrentState.bgColorLayer != nullptr))) && !mLayerDetached; } void BufferStateLayer::pushPendingState() { Loading
services/surfaceflinger/Layer.cpp +9 −0 Original line number Diff line number Diff line Loading @@ -780,6 +780,15 @@ uint32_t Layer::doTransaction(uint32_t flags) { ATRACE_CALL(); if (mLayerDetached) { // Ensure BLAST buffer callbacks are processed. // detachChildren and mLayerDetached were implemented to avoid geometry updates // to layers in the cases of animation. For BufferQueue layers buffers are still // consumed as normal. This is useful as otherwise the client could get hung // inevitably waiting on a buffer to return. We recreate this semantic for BufferQueue // even though it is a little consistent. detachChildren is shortly slated for removal // by the hierarchy mirroring work so we don't need to worry about it too much. mDrawingState.callbackHandles = mCurrentState.callbackHandles; mCurrentState.callbackHandles = {}; return flags; } Loading