Wait on frame work fences when frames are dropped am: 06e2e9cf4c
am: 7a14f5aeb9
Change-Id: I9f2159f2f5c8111df0c14e46cc5690cbfab9b7e9
This commit is contained in:
@@ -633,6 +633,9 @@ void CanvasContext::prepareAndDraw(RenderNode* node) {
|
||||
prepareTree(info, frameInfo, systemTime(CLOCK_MONOTONIC), node);
|
||||
if (info.out.canDrawThisFrame) {
|
||||
draw();
|
||||
} else {
|
||||
// wait on fences so tasks don't overlap next frame
|
||||
waitOnFences();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -168,6 +168,8 @@ public:
|
||||
|
||||
ANDROID_API int64_t getFrameNumber();
|
||||
|
||||
void waitOnFences();
|
||||
|
||||
private:
|
||||
friend class RegisterFrameCallbackTask;
|
||||
// TODO: Replace with something better for layer & other GL object
|
||||
@@ -178,8 +180,6 @@ private:
|
||||
|
||||
void freePrefetchedLayers(TreeObserver* observer);
|
||||
|
||||
void waitOnFences();
|
||||
|
||||
bool isSwapChainStuffed();
|
||||
|
||||
EGLint mLastFrameWidth = 0;
|
||||
|
||||
@@ -104,6 +104,9 @@ void DrawFrameTask::run() {
|
||||
|
||||
if (CC_LIKELY(canDrawThisFrame)) {
|
||||
context->draw();
|
||||
} else {
|
||||
// wait on fences so tasks don't overlap next frame
|
||||
context->waitOnFences();
|
||||
}
|
||||
|
||||
if (!canUnblockUiThread) {
|
||||
|
||||
Reference in New Issue
Block a user