Title: [133570] trunk/Source/WebKit2
Revision
133570
Author
[email protected]
Date
2012-11-06 01:34:49 -0800 (Tue, 06 Nov 2012)

Log Message

[EFL] [WK2] Random crash in Minibrowser
https://bugs.webkit.org/show_bug.cgi?id=101241

Patch by Viatcheslav Ostapenko <[email protected]> on 2012-11-06
Reviewed by Gyuyoung Kim.

Do not clear GL context and GL surface in exitAcceleratedCompositing.

* UIProcess/API/efl/EwkViewImpl.cpp:
(EwkViewImpl::createGLSurface):
(EwkViewImpl::enterAcceleratedCompositingMode):
(EwkViewImpl::exitAcceleratedCompositingMode):

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (133569 => 133570)


--- trunk/Source/WebKit2/ChangeLog	2012-11-06 08:49:20 UTC (rev 133569)
+++ trunk/Source/WebKit2/ChangeLog	2012-11-06 09:34:49 UTC (rev 133570)
@@ -1,3 +1,17 @@
+2012-11-06  Viatcheslav Ostapenko  <[email protected]>
+
+        [EFL] [WK2] Random crash in Minibrowser
+        https://bugs.webkit.org/show_bug.cgi?id=101241
+
+        Reviewed by Gyuyoung Kim.
+
+        Do not clear GL context and GL surface in exitAcceleratedCompositing.
+
+        * UIProcess/API/efl/EwkViewImpl.cpp:
+        (EwkViewImpl::createGLSurface):
+        (EwkViewImpl::enterAcceleratedCompositingMode):
+        (EwkViewImpl::exitAcceleratedCompositingMode):
+
 2012-11-05  Sam Weinig  <[email protected]>
 
         Need a way to send and receive messages between the WKWebProcessPlugIn object and the client

Modified: trunk/Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp (133569 => 133570)


--- trunk/Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp	2012-11-06 08:49:20 UTC (rev 133569)
+++ trunk/Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp	2012-11-06 09:34:49 UTC (rev 133570)
@@ -501,6 +501,21 @@
 #if USE(ACCELERATED_COMPOSITING)
 bool EwkViewImpl::createGLSurface(const IntSize& viewSize)
 {
+    if (!m_evasGL) {
+        Evas* evas = evas_object_evas_get(m_view);
+        m_evasGL = adoptPtr(evas_gl_new(evas));
+        if (!m_evasGL)
+            return false;
+    }
+
+    if (!m_evasGLContext) {
+        m_evasGLContext = EvasGLContext::create(evasGL());
+        if (!m_evasGLContext) {
+            WARN("Failed to create GLContext.");
+            return false;
+        }
+    }
+
     Ewk_View_Smart_Data* sd = smartData();
 
     Evas_GL_Config evasGLConfig = {
@@ -530,42 +545,19 @@
 
 bool EwkViewImpl::enterAcceleratedCompositingMode()
 {
-    if (m_evasGL) {
-        EINA_LOG_DOM_WARN(_ewk_log_dom, "Accelerated compositing mode already entered.");
-        return false;
+    if (!m_evasGLSurface) {
+        if (!createGLSurface(size())) {
+            WARN("Failed to create GLSurface.");
+            return false;
+        }
     }
 
-    Evas* evas = evas_object_evas_get(m_view);
-    m_evasGL = adoptPtr(evas_gl_new(evas));
-    if (!m_evasGL)
-        return false;
-
-    m_evasGLContext = EvasGLContext::create(evasGL());
-    if (!m_evasGLContext) {
-        EINA_LOG_DOM_WARN(_ewk_log_dom, "Failed to create GLContext.");
-        m_evasGL.clear();
-        return false;
-    }
-
-    if (!createGLSurface(size())) {
-        EINA_LOG_DOM_WARN(_ewk_log_dom, "Failed to create GLSurface.");
-        m_evasGLContext.clear();
-        m_evasGL.clear();
-        return false;
-    }
-
     page()->drawingArea()->layerTreeCoordinatorProxy()->layerTreeRenderer()->setActive(true);
     return true;
 }
 
 bool EwkViewImpl::exitAcceleratedCompositingMode()
 {
-    EINA_SAFETY_ON_NULL_RETURN_VAL(m_evasGL, false);
-
-    m_evasGLSurface.clear();
-    m_evasGLContext.clear();
-    m_evasGL.clear();
-
     return true;
 }
 #endif
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to