Loading core/jni/android_view_RenderNode.cpp +2 −1 Original line number Diff line number Diff line Loading @@ -564,7 +564,8 @@ static void android_view_RenderNode_requestPositionUpdates(JNIEnv* env, jobject, auto functor = std::bind( std::mem_fn(&SurfaceViewPositionUpdater::doUpdatePosition), this, (jlong) info.frameNumber, (jint) bounds.left, (jint) bounds.top, (jlong) info.canvasContext.getFrameNumber(), (jint) bounds.left, (jint) bounds.top, (jint) bounds.right, (jint) bounds.bottom); info.canvasContext.enqueueFrameWork(std::move(functor)); Loading libs/hwui/TreeInfo.h +0 −2 Original line number Diff line number Diff line Loading @@ -102,8 +102,6 @@ public: // tree state changes TreeObserver* observer = nullptr; // Frame number for use with synchronized surfaceview position updating int64_t frameNumber = -1; int32_t windowInsetLeft = 0; int32_t windowInsetTop = 0; bool updateWindowPositions = false; Loading libs/hwui/renderthread/CanvasContext.cpp +11 −4 Original line number Diff line number Diff line Loading @@ -108,6 +108,8 @@ void CanvasContext::setSurface(Surface* surface) { mEglSurface = mEglManager.createSurface(surface); } mFrameNumber = -1; if (mEglSurface != EGL_NO_SURFACE) { const bool preserveBuffer = (mSwapBehavior != kSwap_discardBuffer); mBufferPreserved = mEglManager.setPreserveBuffer(mEglSurface, preserveBuffer); Loading Loading @@ -214,10 +216,6 @@ void CanvasContext::prepareTree(TreeInfo& info, int64_t* uiFrameInfo, info.renderer = mCanvas; #endif if (CC_LIKELY(mNativeSurface.get())) { info.frameNumber = static_cast<int64_t>(mNativeSurface->getNextFrameNumber()); } mAnimationContext->startFrame(info.mode); for (const sp<RenderNode>& node : mRenderNodes) { // Only the primary target node will be drawn full - all other nodes would get drawn in Loading Loading @@ -515,6 +513,7 @@ void CanvasContext::draw() { swap.swapTime = systemTime(CLOCK_MONOTONIC); swap.vsyncTime = mRenderThread.timeLord().latestVsync(); mHaveNewSurface = false; mFrameNumber = -1; } // TODO: Use a fence for real completion? Loading Loading @@ -782,6 +781,14 @@ void CanvasContext::enqueueFrameWork(std::function<void()>&& func) { mFrameWorkProcessor->add(task); } int64_t CanvasContext::getFrameNumber() { // mFrameNumber is reset to -1 when the surface changes or we swap buffers if (mFrameNumber == -1 && mNativeSurface.get()) { mFrameNumber = static_cast<int64_t>(mNativeSurface->getNextFrameNumber()); } return mFrameNumber; } } /* namespace renderthread */ } /* namespace uirenderer */ } /* namespace android */ libs/hwui/renderthread/CanvasContext.h +3 −0 Original line number Diff line number Diff line Loading @@ -166,6 +166,8 @@ public: // Used to queue up work that needs to be completed before this frame completes ANDROID_API void enqueueFrameWork(std::function<void()>&& func); ANDROID_API int64_t getFrameNumber(); private: friend class RegisterFrameCallbackTask; // TODO: Replace with something better for layer & other GL object Loading Loading @@ -195,6 +197,7 @@ private: }; RingBuffer<SwapHistory, 3> mSwapHistory; int64_t mFrameNumber = -1; bool mOpaque; #if HWUI_NEW_OPS Loading Loading
core/jni/android_view_RenderNode.cpp +2 −1 Original line number Diff line number Diff line Loading @@ -564,7 +564,8 @@ static void android_view_RenderNode_requestPositionUpdates(JNIEnv* env, jobject, auto functor = std::bind( std::mem_fn(&SurfaceViewPositionUpdater::doUpdatePosition), this, (jlong) info.frameNumber, (jint) bounds.left, (jint) bounds.top, (jlong) info.canvasContext.getFrameNumber(), (jint) bounds.left, (jint) bounds.top, (jint) bounds.right, (jint) bounds.bottom); info.canvasContext.enqueueFrameWork(std::move(functor)); Loading
libs/hwui/TreeInfo.h +0 −2 Original line number Diff line number Diff line Loading @@ -102,8 +102,6 @@ public: // tree state changes TreeObserver* observer = nullptr; // Frame number for use with synchronized surfaceview position updating int64_t frameNumber = -1; int32_t windowInsetLeft = 0; int32_t windowInsetTop = 0; bool updateWindowPositions = false; Loading
libs/hwui/renderthread/CanvasContext.cpp +11 −4 Original line number Diff line number Diff line Loading @@ -108,6 +108,8 @@ void CanvasContext::setSurface(Surface* surface) { mEglSurface = mEglManager.createSurface(surface); } mFrameNumber = -1; if (mEglSurface != EGL_NO_SURFACE) { const bool preserveBuffer = (mSwapBehavior != kSwap_discardBuffer); mBufferPreserved = mEglManager.setPreserveBuffer(mEglSurface, preserveBuffer); Loading Loading @@ -214,10 +216,6 @@ void CanvasContext::prepareTree(TreeInfo& info, int64_t* uiFrameInfo, info.renderer = mCanvas; #endif if (CC_LIKELY(mNativeSurface.get())) { info.frameNumber = static_cast<int64_t>(mNativeSurface->getNextFrameNumber()); } mAnimationContext->startFrame(info.mode); for (const sp<RenderNode>& node : mRenderNodes) { // Only the primary target node will be drawn full - all other nodes would get drawn in Loading Loading @@ -515,6 +513,7 @@ void CanvasContext::draw() { swap.swapTime = systemTime(CLOCK_MONOTONIC); swap.vsyncTime = mRenderThread.timeLord().latestVsync(); mHaveNewSurface = false; mFrameNumber = -1; } // TODO: Use a fence for real completion? Loading Loading @@ -782,6 +781,14 @@ void CanvasContext::enqueueFrameWork(std::function<void()>&& func) { mFrameWorkProcessor->add(task); } int64_t CanvasContext::getFrameNumber() { // mFrameNumber is reset to -1 when the surface changes or we swap buffers if (mFrameNumber == -1 && mNativeSurface.get()) { mFrameNumber = static_cast<int64_t>(mNativeSurface->getNextFrameNumber()); } return mFrameNumber; } } /* namespace renderthread */ } /* namespace uirenderer */ } /* namespace android */
libs/hwui/renderthread/CanvasContext.h +3 −0 Original line number Diff line number Diff line Loading @@ -166,6 +166,8 @@ public: // Used to queue up work that needs to be completed before this frame completes ANDROID_API void enqueueFrameWork(std::function<void()>&& func); ANDROID_API int64_t getFrameNumber(); private: friend class RegisterFrameCallbackTask; // TODO: Replace with something better for layer & other GL object Loading Loading @@ -195,6 +197,7 @@ private: }; RingBuffer<SwapHistory, 3> mSwapHistory; int64_t mFrameNumber = -1; bool mOpaque; #if HWUI_NEW_OPS Loading