2010-09-22 Paul Knight <pknight@apple.com>
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 22 Sep 2010 08:37:01 +0000 (08:37 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 22 Sep 2010 08:37:01 +0000 (08:37 +0000)
        Reviewed by Simon Fraser.

        -[WebView _scheduleCompositingLayerSync] should wake the run loop
        https://bugs.webkit.org/show_bug.cgi?id=46226

        Call CFRunLoopWakeUp to make sure the run loop is not sleeping, which could delay layer painting.

        * WebView/WebView.mm:
        (-[WebView _scheduleCompositingLayerSync]):

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

WebKit/mac/ChangeLog
WebKit/mac/WebView/WebView.mm

index de7c6a12762cfb3da03a4d3fe5836a366de60dfe..eeea910f91febcf001ccb0fb7cd3de68c0c6f33e 100644 (file)
@@ -1,3 +1,15 @@
+2010-09-22  Paul Knight  <pknight@apple.com>
+
+        Reviewed by Simon Fraser.
+
+        -[WebView _scheduleCompositingLayerSync] should wake the run loop
+        https://bugs.webkit.org/show_bug.cgi?id=46226
+
+        Call CFRunLoopWakeUp to make sure the run loop is not sleeping, which could delay layer painting.
+
+        * WebView/WebView.mm:
+        (-[WebView _scheduleCompositingLayerSync]):
+
 2010-09-21  Andy Estes  <aestes@apple.com>
 
         Reviewed by Darin Adler.
index 23aa99c1ac0a1810a6aa84f82d43060c3eec28e1..9f3271e7b8fa50dd84713a4e1de60f4537590273 100644 (file)
@@ -5869,6 +5869,11 @@ static void layerSyncRunLoopObserverCallBack(CFRunLoopObserverRef, CFRunLoopActi
 
 - (void)_scheduleCompositingLayerSync
 {
+    CFRunLoopRef currentRunLoop = CFRunLoopGetCurrent();
+
+    // Make sure we wake up the loop or the observer could be delayed until some other source fires.
+    CFRunLoopWakeUp(currentRunLoop);
+
     if (_private->layerSyncRunLoopObserver)
         return;
 
@@ -5884,7 +5889,7 @@ static void layerSyncRunLoopObserverCallBack(CFRunLoopObserverRef, CFRunLoopActi
         kCFRunLoopBeforeWaiting | kCFRunLoopExit, true /* repeats */,
         runLoopOrder, layerSyncRunLoopObserverCallBack, &context);
 
-    CFRunLoopAddObserver(CFRunLoopGetCurrent(), _private->layerSyncRunLoopObserver, kCFRunLoopCommonModes);
+    CFRunLoopAddObserver(currentRunLoop, _private->layerSyncRunLoopObserver, kCFRunLoopCommonModes);
 }
 
 #endif