Title: [164997] trunk/Source/WebKit2
Revision
164997
Author
simon.fra...@apple.com
Date
2014-03-03 12:01:26 -0800 (Mon, 03 Mar 2014)

Log Message

Crash when going into video fullscreen on iOS
https://bugs.webkit.org/show_bug.cgi?id=129613

Reviewed by Dean Jackson.

We shouldn't reparent a UIView's layer without unparenting
the view first.

* UIProcess/ios/WebVideoFullscreenManagerProxy.mm:
(WebKit::WebVideoFullscreenManagerProxy::setVideoLayerID):

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (164996 => 164997)


--- trunk/Source/WebKit2/ChangeLog	2014-03-03 19:30:49 UTC (rev 164996)
+++ trunk/Source/WebKit2/ChangeLog	2014-03-03 20:01:26 UTC (rev 164997)
@@ -1,3 +1,16 @@
+2014-03-03  Simon Fraser  <simon.fra...@apple.com>
+
+        Crash when going into video fullscreen on iOS
+        https://bugs.webkit.org/show_bug.cgi?id=129613
+
+        Reviewed by Dean Jackson.
+        
+        We shouldn't reparent a UIView's layer without unparenting
+        the view first.
+
+        * UIProcess/ios/WebVideoFullscreenManagerProxy.mm:
+        (WebKit::WebVideoFullscreenManagerProxy::setVideoLayerID):
+
 2014-03-03  Carlos Garcia Campos  <cgar...@igalia.com>
 
         [GTK] WebKit2WebExtension GIR can't be used in vala

Modified: trunk/Source/WebKit2/UIProcess/ios/WebVideoFullscreenManagerProxy.mm (164996 => 164997)


--- trunk/Source/WebKit2/UIProcess/ios/WebVideoFullscreenManagerProxy.mm	2014-03-03 19:30:49 UTC (rev 164996)
+++ trunk/Source/WebKit2/UIProcess/ios/WebVideoFullscreenManagerProxy.mm	2014-03-03 20:01:26 UTC (rev 164997)
@@ -72,8 +72,15 @@
 {
     RemoteLayerTreeDrawingAreaProxy* remoteDrawingAreaProxy = toRemoteLayerTreeDrawingAreaProxy(m_page->drawingArea());
 
-    UIView *videoView = remoteDrawingAreaProxy->remoteLayerTreeHost().getLayer(videoLayerID);
-    setVideoLayer(videoView.layer);
+    if (videoLayerID) {
+        // Entering fullscreen.
+        UIView *videoView = remoteDrawingAreaProxy->remoteLayerTreeHost().getLayer(videoLayerID);
+        // Remove the UIView from its superlayer, so we can reparent the layer without problems.
+        [videoView removeFromSuperview];
+        
+        setVideoLayer(videoView.layer);
+    } else
+        setVideoLayer(nil);
     
     m_videoLayerID = videoLayerID;
     m_enterFullscreenAfterVideoLayerUnparentedTransaction = true;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to