[Threaded Compositor] Update timer should have lower priority than tasks scheduled...
authorcarlosgc@webkit.org <carlosgc@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 6 Sep 2016 16:26:05 +0000 (16:26 +0000)
committercarlosgc@webkit.org <carlosgc@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 6 Sep 2016 16:26:05 +0000 (16:26 +0000)
https://bugs.webkit.org/show_bug.cgi?id=161625

Reviewed by Sergio Villar Senin.

This way, if a resize is scheduled, for example, and there are pending updates, the resize will happen first,
and then the updates will happen at the right size.

* Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp:
(WebKit::CompositingRunLoop::CompositingRunLoop): Use G_PRIORITY_HIGH_IDLE as update timer priority. The actual
priority doesn't really matter as long as it's lower than G_PRIORITY_DEFAULT, because there are only two
possible sources in the compositing run loop, one for the tasks scheduled, and another one for the update timer.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@205484 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebKit2/ChangeLog
Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp

index 7852e87..a03baba 100644 (file)
@@ -1,3 +1,18 @@
+2016-09-06  Carlos Garcia Campos  <cgarcia@igalia.com>
+
+        [Threaded Compositor] Update timer should have lower priority than tasks scheduled in compositing thread
+        https://bugs.webkit.org/show_bug.cgi?id=161625
+
+        Reviewed by Sergio Villar Senin.
+
+        This way, if a resize is scheduled, for example, and there are pending updates, the resize will happen first,
+        and then the updates will happen at the right size.
+
+        * Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp:
+        (WebKit::CompositingRunLoop::CompositingRunLoop): Use G_PRIORITY_HIGH_IDLE as update timer priority. The actual
+        priority doesn't really matter as long as it's lower than G_PRIORITY_DEFAULT, because there are only two
+        possible sources in the compositing run loop, one for the tasks scheduled, and another one for the update timer.
+
 2016-09-06  Emanuele Aina  <emanuele.aina@collabora.com>
 
         [GTK] glImageTargetTexture2D() is a GL function, rename accordingly
index fb48e75..40dc4f4 100644 (file)
 #include <wtf/NeverDestroyed.h>
 #include <wtf/WorkQueue.h>
 
+#if USE(GLIB_EVENT_LOOP)
+#include <glib.h>
+#endif
+
 namespace WebKit {
 
 class WorkQueuePool {
@@ -108,6 +112,9 @@ CompositingRunLoop::CompositingRunLoop(std::function<void ()>&& updateFunction)
     : m_updateTimer(WorkQueuePool::singleton().runLoop(this), this, &CompositingRunLoop::updateTimerFired)
     , m_updateFunction(WTFMove(updateFunction))
 {
+#if USE(GLIB_EVENT_LOOP)
+    m_updateTimer.setPriority(G_PRIORITY_HIGH_IDLE);
+#endif
 }
 
 CompositingRunLoop::~CompositingRunLoop()