[WebGL] Crash due to forceLostContext
authorbfulgham@apple.com <bfulgham@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 14 Jan 2014 01:00:54 +0000 (01:00 +0000)
committerbfulgham@apple.com <bfulgham@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 14 Jan 2014 01:00:54 +0000 (01:00 +0000)
https://bugs.webkit.org/show_bug.cgi?id=126947

Reviewed by Dean Jackson.

Covered by webgl/conformance/textures/origin-clean-conformance.html.

* html/canvas/WebGLRenderingContext.cpp:
(WebCore::WebGLRenderingContext::isContextLost): Make const.
(WebCore::WebGLRenderingContext::platformLayer): Don't attempt to use
a lost context.
* html/canvas/WebGLRenderingContext.h: isContextLost should be const.

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

Source/WebCore/ChangeLog
Source/WebCore/html/canvas/WebGLRenderingContext.cpp
Source/WebCore/html/canvas/WebGLRenderingContext.h

index 266258e544d5cb650e344cdf64803d21114b1d52..8aa1a16141d90669ee84721d647ae65db058086c 100644 (file)
@@ -1,3 +1,18 @@
+2014-01-13  Brent Fulgham  <bfulgham@apple.com>
+
+        [WebGL] Crash due to forceLostContext
+        https://bugs.webkit.org/show_bug.cgi?id=126947
+
+        Reviewed by Dean Jackson.
+
+        Covered by webgl/conformance/textures/origin-clean-conformance.html.
+
+        * html/canvas/WebGLRenderingContext.cpp:
+        (WebCore::WebGLRenderingContext::isContextLost): Make const.
+        (WebCore::WebGLRenderingContext::platformLayer): Don't attempt to use
+        a lost context.
+        * html/canvas/WebGLRenderingContext.h: isContextLost should be const.
+
 2014-01-13  Martin Robinson  <mrobinson@igalia.com>
 
         [GTK][CMake] WebCorePlatform build can sometimes fail due to missing generated headers
index b685c37bc696456299cba17fa01f72764008babe..bfbaf264f9adad9b439da7b2f9fe00a9ae906f95 100644 (file)
@@ -3285,7 +3285,7 @@ GC3Dboolean WebGLRenderingContext::isBuffer(WebGLBuffer* buffer)
     return m_context->isBuffer(buffer->object());
 }
 
-bool WebGLRenderingContext::isContextLost()
+bool WebGLRenderingContext::isContextLost() const
 {
     return m_contextLost;
 }
@@ -4733,7 +4733,7 @@ void WebGLRenderingContext::forceRestoreContext()
 #if USE(ACCELERATED_COMPOSITING)
 PlatformLayer* WebGLRenderingContext::platformLayer() const
 {
-    return m_context->platformLayer();
+    return (!isContextLost()) ? m_context->platformLayer() : 0;
 }
 #endif
 
index 60fa562b50d6629a6866da3c0283b9b8ddac042f..90da79ed4f1999c81ceed357098a8633033ef76d 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2009, 2014 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -187,7 +187,7 @@ public:
 
     void hint(GC3Denum target, GC3Denum mode);
     GC3Dboolean isBuffer(WebGLBuffer*);
-    bool isContextLost();
+    bool isContextLost() const;
     GC3Dboolean isEnabled(GC3Denum cap);
     GC3Dboolean isFramebuffer(WebGLFramebuffer*);
     GC3Dboolean isProgram(WebGLProgram*);