Title: [233876] trunk/Source/WebKit
Revision
233876
Author
timothy_hor...@apple.com
Date
2018-07-16 18:10:01 -0700 (Mon, 16 Jul 2018)

Log Message

Black flash in content area when returning to Mail
https://bugs.webkit.org/show_bug.cgi?id=187719
<rdar://problem/42165340>

Reviewed by Wenson Hsieh.

* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::applicationDidFinishSnapshottingAfterEnteringBackground):
This still reproduces sometimes even after r233723, because:

If a pending commit arrives after ApplicationDidEnterBackground (when we
ask the web content process to freeze the layer tree), and after
ApplicationDidFinishSnapshottingAfterEnteringBackground (when we hide
WKContentView), but before the process sleeps, it will cause WKContentView
to be unhidden (potentially including layers with empty surfaces as contents).
Nothing will re-hide WKContentView. Instead, we should wait for the next
*pending* commit, which will necessarily not come until after the application
returns to the foreground because of the strict IPC ordering between
the message that freezes the layer tree and the "next commit" mechanism.

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (233875 => 233876)


--- trunk/Source/WebKit/ChangeLog	2018-07-17 01:03:20 UTC (rev 233875)
+++ trunk/Source/WebKit/ChangeLog	2018-07-17 01:10:01 UTC (rev 233876)
@@ -1,3 +1,25 @@
+2018-07-16  Tim Horton  <timothy_hor...@apple.com>
+
+        Black flash in content area when returning to Mail
+        https://bugs.webkit.org/show_bug.cgi?id=187719
+        <rdar://problem/42165340>
+
+        Reviewed by Wenson Hsieh.
+
+        * UIProcess/ios/WebPageProxyIOS.mm:
+        (WebKit::WebPageProxy::applicationDidFinishSnapshottingAfterEnteringBackground):
+        This still reproduces sometimes even after r233723, because:
+
+        If a pending commit arrives after ApplicationDidEnterBackground (when we
+        ask the web content process to freeze the layer tree), and after
+        ApplicationDidFinishSnapshottingAfterEnteringBackground (when we hide
+        WKContentView), but before the process sleeps, it will cause WKContentView
+        to be unhidden (potentially including layers with empty surfaces as contents).
+        Nothing will re-hide WKContentView. Instead, we should wait for the next
+        *pending* commit, which will necessarily not come until after the application
+        returns to the foreground because of the strict IPC ordering between
+        the message that freezes the layer tree and the "next commit" mechanism.
+
 2018-07-16  Said Abou-Hallawa  <sabouhall...@apple.com>
 
         [iOS] When bringing MobileSafari to the foreground, images, which are pending decoding, won't be drawn into the immediate-paint transaction

Modified: trunk/Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm (233875 => 233876)


--- trunk/Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm	2018-07-17 01:03:20 UTC (rev 233875)
+++ trunk/Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm	2018-07-17 01:10:01 UTC (rev 233876)
@@ -657,7 +657,7 @@
 {
     if (m_drawingArea) {
         m_drawingArea->prepareForAppSuspension();
-        m_drawingArea->hideContentUntilAnyUpdate();
+        m_drawingArea->hideContentUntilPendingUpdate();
     }
     m_process->send(Messages::WebPage::ApplicationDidFinishSnapshottingAfterEnteringBackground(), m_pageID);
 }
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to