Title: [145611] branches/safari-536.30-branch/Source/WebCore
- Revision
- 145611
- Author
- [email protected]
- Date
- 2013-03-12 16:40:25 -0700 (Tue, 12 Mar 2013)
Log Message
Merged r132398. <rdar://problem/13334911>
Modified Paths
Diff
Modified: branches/safari-536.30-branch/Source/WebCore/ChangeLog (145610 => 145611)
--- branches/safari-536.30-branch/Source/WebCore/ChangeLog 2013-03-12 23:27:35 UTC (rev 145610)
+++ branches/safari-536.30-branch/Source/WebCore/ChangeLog 2013-03-12 23:40:25 UTC (rev 145611)
@@ -1,5 +1,33 @@
2013-03-12 Lucas Forschler <[email protected]>
+ Merge r132398
+
+ 2012-10-24 Ami Fischman <[email protected]>
+
+ call to setNeedsLayout during RenderVideo::paintReplaced
+ https://bugs.webkit.org/show_bug.cgi?id=100265
+
+ Reviewed by Eric Carlson.
+
+ Removed unnecessary call and added new defensive guards to catch erroneous setNeedsLayout() calls
+ during paints earlier (so the offending calls are in the emitted stacktrace).
+
+ No new tests - new defensive checks are triggered by existing tests.
+
+ * page/FrameView.cpp:
+ (WebCore::FrameView::paintContents): forbid setNeedsLayout() during painting
+ * rendering/RenderObject.cpp:
+ (WebCore):
+ (WebCore::RenderObject::SetLayoutNeededForbiddenScope::SetLayoutNeededForbiddenScope):
+ (WebCore::RenderObject::SetLayoutNeededForbiddenScope::~SetLayoutNeededForbiddenScope):
+ * rendering/RenderObject.h:
+ (RenderObject):
+ (SetLayoutNeededForbiddenScope): added helper class for forbidding setNeedsLayout() in a scope.
+ * rendering/RenderVideo.cpp:
+ (WebCore::RenderVideo::paintReplaced): drop the offending & unnecessary call to updatePlayer().
+
+2013-03-12 Lucas Forschler <[email protected]>
+
Merge r131578
2012-10-17 Alexander Pavlov <[email protected]>
Modified: branches/safari-536.30-branch/Source/WebCore/page/FrameView.cpp (145610 => 145611)
--- branches/safari-536.30-branch/Source/WebCore/page/FrameView.cpp 2013-03-12 23:27:35 UTC (rev 145610)
+++ branches/safari-536.30-branch/Source/WebCore/page/FrameView.cpp 2013-03-12 23:40:25 UTC (rev 145611)
@@ -3093,6 +3093,10 @@
RenderObject* eltRenderer = m_nodeToDraw ? m_nodeToDraw->renderer() : 0;
RenderLayer* rootLayer = root->layer();
+#ifndef NDEBUG
+ RenderObject::SetLayoutNeededForbiddenScope forbidSetNeedsLayout(rootLayer->renderer());
+#endif
+
rootLayer->paint(p, rect, m_paintBehavior, eltRenderer);
if (rootLayer->containsDirtyOverlayScrollbars())
Modified: branches/safari-536.30-branch/Source/WebCore/rendering/RenderObject.cpp (145610 => 145611)
--- branches/safari-536.30-branch/Source/WebCore/rendering/RenderObject.cpp 2013-03-12 23:27:35 UTC (rev 145610)
+++ branches/safari-536.30-branch/Source/WebCore/rendering/RenderObject.cpp 2013-03-12 23:40:25 UTC (rev 145611)
@@ -90,6 +90,18 @@
#ifndef NDEBUG
static void* baseOfRenderObjectBeingDeleted;
+
+RenderObject::SetLayoutNeededForbiddenScope::SetLayoutNeededForbiddenScope(RenderObject* renderObject)
+ : m_renderObject(renderObject)
+ , m_preexistingForbidden(m_renderObject->isSetNeedsLayoutForbidden())
+{
+ m_renderObject->setNeedsLayoutIsForbidden(true);
+}
+
+RenderObject::SetLayoutNeededForbiddenScope::~SetLayoutNeededForbiddenScope()
+{
+ m_renderObject->setNeedsLayoutIsForbidden(m_preexistingForbidden);
+}
#endif
struct SameSizeAsRenderObject {
Modified: branches/safari-536.30-branch/Source/WebCore/rendering/RenderObject.h (145610 => 145611)
--- branches/safari-536.30-branch/Source/WebCore/rendering/RenderObject.h 2013-03-12 23:27:35 UTC (rev 145610)
+++ branches/safari-536.30-branch/Source/WebCore/rendering/RenderObject.h 2013-03-12 23:40:25 UTC (rev 145611)
@@ -231,6 +231,16 @@
bool hasAXObject() const { return m_hasAXObject; }
bool isSetNeedsLayoutForbidden() const { return m_setNeedsLayoutForbidden; }
void setNeedsLayoutIsForbidden(bool flag) { m_setNeedsLayoutForbidden = flag; }
+
+ // Helper class forbidding calls to setNeedsLayout() during its lifetime.
+ class SetLayoutNeededForbiddenScope {
+ public:
+ explicit SetLayoutNeededForbiddenScope(RenderObject*);
+ ~SetLayoutNeededForbiddenScope();
+ private:
+ RenderObject* m_renderObject;
+ bool m_preexistingForbidden;
+ };
#endif
// Obtains the nearest enclosing block (including this block) that contributes a first-line style to our inline
Modified: branches/safari-536.30-branch/Source/WebCore/rendering/RenderVideo.cpp (145610 => 145611)
--- branches/safari-536.30-branch/Source/WebCore/rendering/RenderVideo.cpp 2013-03-12 23:27:35 UTC (rev 145610)
+++ branches/safari-536.30-branch/Source/WebCore/rendering/RenderVideo.cpp 2013-03-12 23:40:25 UTC (rev 145611)
@@ -195,13 +195,10 @@
if (Frame* frame = this->frame())
page = frame->page();
- if (!displayingPoster) {
- if (!mediaPlayer) {
- if (page && paintInfo.phase == PaintPhaseForeground)
- page->addRelevantUnpaintedObject(this, visualOverflowRect());
- return;
- }
- updatePlayer();
+ if (!displayingPoster && !mediaPlayer) {
+ if (page && paintInfo.phase == PaintPhaseForeground)
+ page->addRelevantUnpaintedObject(this, visualOverflowRect());
+ return;
}
LayoutRect rect = videoBox();
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes