Title: [95978] trunk/Source
- Revision
- 95978
- Author
- [email protected]
- Date
- 2011-09-26 12:51:15 -0700 (Mon, 26 Sep 2011)
Log Message
White flash when entering full-screen using element.webkitRequestFullScreen()
https://bugs.webkit.org/show_bug.cgi?id=68481
Reviewed by Simon Fraser.
Source/WebCore:
No new tests; covered by existing full screen tests.
During an animation, renderers may try to paint into the FullScreenRenderer's
GraphicsLayer, and an optimization we previously added for the FullScreenRenderer's
background will cause these paints to fail. Remove this optimization in
containsPaintedContent, and taking non-composited elements into full screen will
animate correctly.
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::containsPaintedContent):
Source/WebKit2:
Do not re-enable screen updates after exiting compositing mode until a repaint has completed.
* UIProcess/mac/WKFullScreenWindowController.mm:
(-[WKFullScreenWindowController exitAcceleratedCompositingMode]):
(continueExitCompositingModeAfterRepaintCallback):
(-[WKFullScreenWindowController _continueExitCompositingModeAfterRepaint]):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (95977 => 95978)
--- trunk/Source/WebCore/ChangeLog 2011-09-26 19:49:57 UTC (rev 95977)
+++ trunk/Source/WebCore/ChangeLog 2011-09-26 19:51:15 UTC (rev 95978)
@@ -1,3 +1,21 @@
+2011-09-26 Jer Noble <[email protected]>
+
+ White flash when entering full-screen using element.webkitRequestFullScreen()
+ https://bugs.webkit.org/show_bug.cgi?id=68481
+
+ Reviewed by Simon Fraser.
+
+ No new tests; covered by existing full screen tests.
+
+ During an animation, renderers may try to paint into the FullScreenRenderer's
+ GraphicsLayer, and an optimization we previously added for the FullScreenRenderer's
+ background will cause these paints to fail. Remove this optimization in
+ containsPaintedContent, and taking non-composited elements into full screen will
+ animate correctly.
+
+ * rendering/RenderLayerBacking.cpp:
+ (WebCore::RenderLayerBacking::containsPaintedContent):
+
2011-09-26 Mihai Parparita <[email protected]>
Unreviewed, rolling out r95960.
Modified: trunk/Source/WebCore/rendering/RenderLayerBacking.cpp (95977 => 95978)
--- trunk/Source/WebCore/rendering/RenderLayerBacking.cpp 2011-09-26 19:49:57 UTC (rev 95977)
+++ trunk/Source/WebCore/rendering/RenderLayerBacking.cpp 2011-09-26 19:51:15 UTC (rev 95978)
@@ -910,10 +910,6 @@
if (isAcceleratedCanvas(renderer()))
return hasBoxDecorationsOrBackground(renderer());
#endif
-#if ENABLE(FULLSCREEN_API)
- if (renderer()->isRenderFullScreen())
- return false;
-#endif
return true;
}
Modified: trunk/Source/WebKit2/ChangeLog (95977 => 95978)
--- trunk/Source/WebKit2/ChangeLog 2011-09-26 19:49:57 UTC (rev 95977)
+++ trunk/Source/WebKit2/ChangeLog 2011-09-26 19:51:15 UTC (rev 95978)
@@ -1,3 +1,17 @@
+2011-09-26 Jer Noble <[email protected]>
+
+ White flash when entering full-screen using element.webkitRequestFullScreen()
+ https://bugs.webkit.org/show_bug.cgi?id=68481
+
+ Reviewed by Simon Fraser.
+
+ Do not re-enable screen updates after exiting compositing mode until a repaint has completed.
+
+ * UIProcess/mac/WKFullScreenWindowController.mm:
+ (-[WKFullScreenWindowController exitAcceleratedCompositingMode]):
+ (continueExitCompositingModeAfterRepaintCallback):
+ (-[WKFullScreenWindowController _continueExitCompositingModeAfterRepaint]):
+
2011-09-23 Simon Fraser <[email protected]>
Repaint tests don't work in WebKit2
Modified: trunk/Source/WebKit2/UIProcess/mac/WKFullScreenWindowController.mm (95977 => 95978)
--- trunk/Source/WebKit2/UIProcess/mac/WKFullScreenWindowController.mm 2011-09-26 19:49:57 UTC (rev 95977)
+++ trunk/Source/WebKit2/UIProcess/mac/WKFullScreenWindowController.mm 2011-09-26 19:51:15 UTC (rev 95978)
@@ -75,6 +75,8 @@
- (NSView*)animationView;
@end
+static void continueExitCompositingModeAfterRepaintCallback(WKErrorRef error, void* context);
+
@interface WKFullScreenWindowController(Private)
- (void)_requestExitFullScreenWithAnimation:(BOOL)animation;
- (void)_updateMenuAndDockForFullScreen;
@@ -84,6 +86,7 @@
- (void)_swapView:(NSView*)view with:(NSView*)otherView;
- (WebPageProxy*)_page;
- (WebFullScreenManagerProxy*)_manager;
+- (void)_continueExitCompositingModeAfterRepaint;
@end
@interface NSWindow(IsOnActiveSpaceAdditionForTigerAndLeopard)
@@ -412,6 +415,16 @@
}
_layerHostingView = 0;
+ [self _page]->forceRepaint(VoidCallback::create(self, continueExitCompositingModeAfterRepaintCallback));
+}
+
+static void continueExitCompositingModeAfterRepaintCallback(WKErrorRef error, void* context)
+{
+ [(WKFullScreenWindowController*)context _continueExitCompositingModeAfterRepaint];
+}
+
+- (void)_continueExitCompositingModeAfterRepaint
+{
NSEnableScreenUpdates();
[self _manager]->disposeOfLayerClient();
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes