Fix crash in WebKit client app when zooming
authorsimon.fraser@apple.com <simon.fraser@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 3 May 2014 19:13:56 +0000 (19:13 +0000)
committersimon.fraser@apple.com <simon.fraser@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 3 May 2014 19:13:56 +0000 (19:13 +0000)
https://bugs.webkit.org/show_bug.cgi?id=132475
<rdar://problem/16703405>

Reviewed by Tim Horton.

It's possible for a WebTiledBackingLayer CALayer to remain in the CALayer
hierarchy after we've called -invalidate on it, which clears the _tileController.
Project the getters against null derefs to handle this.

* platform/graphics/ca/mac/WebTiledBackingLayer.mm:
(-[WebTiledBackingLayer isOpaque]):
(-[WebTiledBackingLayer acceleratesDrawing]):
(-[WebTiledBackingLayer contentsScale]):

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

Source/WebCore/ChangeLog
Source/WebCore/platform/graphics/ca/mac/WebTiledBackingLayer.mm

index 7df7413..0725ec9 100644 (file)
@@ -1,3 +1,20 @@
+2014-05-03  Simon Fraser  <simon.fraser@apple.com>
+
+        Fix crash in WebKit client app when zooming
+        https://bugs.webkit.org/show_bug.cgi?id=132475
+        <rdar://problem/16703405>
+
+        Reviewed by Tim Horton.
+
+        It's possible for a WebTiledBackingLayer CALayer to remain in the CALayer
+        hierarchy after we've called -invalidate on it, which clears the _tileController.
+        Project the getters against null derefs to handle this.
+
+        * platform/graphics/ca/mac/WebTiledBackingLayer.mm:
+        (-[WebTiledBackingLayer isOpaque]):
+        (-[WebTiledBackingLayer acceleratesDrawing]):
+        (-[WebTiledBackingLayer contentsScale]):
+
 2014-05-03  Carlos Garcia Campos  <cgarcia@igalia.com>
 
         Unreviewed. Fix GTK+ build after r168209.
index d8e2b92..9ffb8a6 100644 (file)
@@ -90,7 +90,7 @@ using namespace WebCore;
 
 - (BOOL)isOpaque
 {
-    return _tileController->tilesAreOpaque();
+    return _tileController ? _tileController->tilesAreOpaque() : NO;
 }
 
 - (void)setNeedsDisplay
@@ -110,7 +110,7 @@ using namespace WebCore;
 
 - (BOOL)acceleratesDrawing
 {
-    return _tileController->acceleratesDrawing();
+    return _tileController ? _tileController->acceleratesDrawing() : NO;
 }
 
 - (void)setContentsScale:(CGFloat)contentsScale
@@ -120,7 +120,7 @@ using namespace WebCore;
 
 - (CGFloat)contentsScale
 {
-    return _tileController->contentsScale();
+    return _tileController ? _tileController->contentsScale() : 1;
 }
 
 - (WebCore::TiledBacking*)tiledBacking