Vsyncs are hard
Bug: 18866485
Change-Id: I7d304df0f20a3296956cb6887a72adba9243f117
diff --git a/libs/hwui/renderthread/RenderThread.cpp b/libs/hwui/renderthread/RenderThread.cpp
index 3e4e965..84826b7 100644
--- a/libs/hwui/renderthread/RenderThread.cpp
+++ b/libs/hwui/renderthread/RenderThread.cpp
@@ -284,6 +284,14 @@
mPendingRegistrationFrameCallbacks.clear();
requestVsync();
}
+
+ if (!mFrameCallbackTaskPending && !mVsyncRequested && mFrameCallbacks.size()) {
+ // TODO: Clean this up. This is working around an issue where a combination
+ // of bad timing and slow drawing can result in dropping a stale vsync
+ // on the floor (correct!) but fails to schedule to listen for the
+ // next vsync (oops), so none of the callbacks are run.
+ requestVsync();
+ }
}
return false;