Title: [116656] trunk
Revision
116656
Author
[email protected]
Date
2012-05-10 09:54:02 -0700 (Thu, 10 May 2012)

Log Message

[EFL][DRT] ewk_view_paint_contents may trigger assertion failure
https://bugs.webkit.org/show_bug.cgi?id=85058

Patch by Dominik Röttsches <[email protected]> on 2012-05-10
Reviewed by Gustavo Noronha Silva.

Source/WebKit/efl:

Fixing assertion failure triggered in media/media-fragment cases.
The assertion is hit because of a race between scheduleRelayout() and
the EWK's idle tiling painting. This is exposed by test cases
that rapidly insert child nodes to the document which lead to
scheduleRelayout() calls. Using the general purpose defensive
layout function, not causing any extra relayout work if there's
nothing to be done, but still avoiding the assertion failure if
layout is needed.

* ewk/ewk_view.cpp:
(ewk_view_paint):
(ewk_view_paint_contents):

LayoutTests:

Unskipping media-fragments that pass after the assertion failure was fixed.

* platform/efl/Skipped:

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (116655 => 116656)


--- trunk/LayoutTests/ChangeLog	2012-05-10 16:47:45 UTC (rev 116655)
+++ trunk/LayoutTests/ChangeLog	2012-05-10 16:54:02 UTC (rev 116656)
@@ -1,3 +1,14 @@
+2012-05-10  Dominik Röttsches  <[email protected]>
+
+        [EFL][DRT] ewk_view_paint_contents may trigger assertion failure
+        https://bugs.webkit.org/show_bug.cgi?id=85058
+
+        Reviewed by Gustavo Noronha Silva.
+
+        Unskipping media-fragments that pass after the assertion failure was fixed.
+
+        * platform/efl/Skipped:
+
 2012-05-10  Erik Arvidsson  <[email protected]>
 
         Add test that makes sure wrappers are setup using the correct window scope

Modified: trunk/LayoutTests/platform/efl/Skipped (116655 => 116656)


--- trunk/LayoutTests/platform/efl/Skipped	2012-05-10 16:47:45 UTC (rev 116655)
+++ trunk/LayoutTests/platform/efl/Skipped	2012-05-10 16:54:02 UTC (rev 116656)
@@ -1038,16 +1038,6 @@
 media/media-controller-playback.html
 media/media-element-play-after-eos.html
 media/media-extension-with-fragment.html
-media/media-fragments/TC0001-TC0009.html
-media/media-fragments/TC0010-TC0019.html
-media/media-fragments/TC0020-TC0029.html
-media/media-fragments/TC0030-TC0039.html
-media/media-fragments/TC0040-TC0049.html
-media/media-fragments/TC0050-TC0059.html
-media/media-fragments/TC0060-TC0069.html
-media/media-fragments/TC0070-TC0079.html
-media/media-fragments/TC0080-TC0089.html
-media/media-fragments/TC0090-TC0099.html
 media/media-initialTime.html
 media/media-load-event.html
 media/media-startTime.html

Modified: trunk/Source/WebKit/efl/ChangeLog (116655 => 116656)


--- trunk/Source/WebKit/efl/ChangeLog	2012-05-10 16:47:45 UTC (rev 116655)
+++ trunk/Source/WebKit/efl/ChangeLog	2012-05-10 16:54:02 UTC (rev 116656)
@@ -1,3 +1,23 @@
+2012-05-10  Dominik Röttsches  <[email protected]>
+
+        [EFL][DRT] ewk_view_paint_contents may trigger assertion failure
+        https://bugs.webkit.org/show_bug.cgi?id=85058
+
+        Reviewed by Gustavo Noronha Silva.
+
+        Fixing assertion failure triggered in media/media-fragment cases.
+        The assertion is hit because of a race between scheduleRelayout() and
+        the EWK's idle tiling painting. This is exposed by test cases
+        that rapidly insert child nodes to the document which lead to
+        scheduleRelayout() calls. Using the general purpose defensive
+        layout function, not causing any extra relayout work if there's
+        nothing to be done, but still avoiding the assertion failure if
+        layout is needed.
+
+        * ewk/ewk_view.cpp:
+        (ewk_view_paint):
+        (ewk_view_paint_contents):
+
 2012-05-10  Sheriff Bot  <[email protected]>
 
         Unreviewed, rolling out r116633.

Modified: trunk/Source/WebKit/efl/ewk/ewk_view.cpp (116655 => 116656)


--- trunk/Source/WebKit/efl/ewk/ewk_view.cpp	2012-05-10 16:47:45 UTC (rev 116655)
+++ trunk/Source/WebKit/efl/ewk/ewk_view.cpp	2012-05-10 16:54:02 UTC (rev 116656)
@@ -2778,8 +2778,7 @@
     WebCore::FrameView* view = priv->mainFrame->view();
     EINA_SAFETY_ON_NULL_RETURN_VAL(view, false);
 
-    if (view->needsLayout())
-        view->forceLayout();
+    view->updateLayoutAndStyleIfNeededRecursive();
     WebCore::GraphicsContext graphicsContext(cr);
     WebCore::IntRect rect(*area);
 
@@ -2806,6 +2805,7 @@
     WebCore::GraphicsContext graphicsContext(cr);
     WebCore::IntRect rect(*area);
 
+    view->updateLayoutAndStyleIfNeededRecursive();
     cairo_save(cr);
     graphicsContext.save();
     graphicsContext.clip(rect);
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to