Changeset 132398 in webkit
- Timestamp:
- Oct 24, 2012 2:07:02 PM (11 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r132397 r132398 1 2012-10-24 Ami Fischman <fischman@chromium.org> 2 3 call to setNeedsLayout during RenderVideo::paintReplaced 4 https://bugs.webkit.org/show_bug.cgi?id=100265 5 6 Reviewed by Eric Carlson. 7 8 Removed unnecessary call and added new defensive guards to catch erroneous setNeedsLayout() calls 9 during paints earlier (so the offending calls are in the emitted stacktrace). 10 11 No new tests - new defensive checks are triggered by existing tests. 12 13 * page/FrameView.cpp: 14 (WebCore::FrameView::paintContents): forbid setNeedsLayout() during painting 15 * rendering/RenderObject.cpp: 16 (WebCore): 17 (WebCore::RenderObject::SetLayoutNeededForbiddenScope::SetLayoutNeededForbiddenScope): 18 (WebCore::RenderObject::SetLayoutNeededForbiddenScope::~SetLayoutNeededForbiddenScope): 19 * rendering/RenderObject.h: 20 (RenderObject): 21 (SetLayoutNeededForbiddenScope): added helper class for forbidding setNeedsLayout() in a scope. 22 * rendering/RenderVideo.cpp: 23 (WebCore::RenderVideo::paintReplaced): drop the offending & unnecessary call to updatePlayer(). 24 1 25 2012-10-24 Adam Barth <abarth@webkit.org> 2 26 -
trunk/Source/WebCore/page/FrameView.cpp
r132239 r132398 3243 3243 RenderLayer* rootLayer = root->layer(); 3244 3244 3245 #ifndef NDEBUG 3246 RenderObject::SetLayoutNeededForbiddenScope forbidSetNeedsLayout(rootLayer->renderer()); 3247 #endif 3248 3245 3249 rootLayer->paint(p, rect, m_paintBehavior, eltRenderer); 3246 3250 -
trunk/Source/WebCore/rendering/RenderObject.cpp
r131938 r132398 92 92 #ifndef NDEBUG 93 93 static void* baseOfRenderObjectBeingDeleted; 94 95 RenderObject::SetLayoutNeededForbiddenScope::SetLayoutNeededForbiddenScope(RenderObject* renderObject) 96 : m_renderObject(renderObject) 97 , m_preexistingForbidden(m_renderObject->isSetNeedsLayoutForbidden()) 98 { 99 m_renderObject->setNeedsLayoutIsForbidden(true); 100 } 101 102 RenderObject::SetLayoutNeededForbiddenScope::~SetLayoutNeededForbiddenScope() 103 { 104 m_renderObject->setNeedsLayoutIsForbidden(m_preexistingForbidden); 105 } 94 106 #endif 95 107 -
trunk/Source/WebCore/rendering/RenderObject.h
r131938 r132398 249 249 bool isSetNeedsLayoutForbidden() const { return m_setNeedsLayoutForbidden; } 250 250 void setNeedsLayoutIsForbidden(bool flag) { m_setNeedsLayoutForbidden = flag; } 251 252 // Helper class forbidding calls to setNeedsLayout() during its lifetime. 253 class SetLayoutNeededForbiddenScope { 254 public: 255 explicit SetLayoutNeededForbiddenScope(RenderObject*); 256 ~SetLayoutNeededForbiddenScope(); 257 private: 258 RenderObject* m_renderObject; 259 bool m_preexistingForbidden; 260 }; 251 261 #endif 252 262 -
trunk/Source/WebCore/rendering/RenderVideo.cpp
r131938 r132398 196 196 page = frame->page(); 197 197 198 if (!displayingPoster) { 199 if (!mediaPlayer) { 200 if (page && paintInfo.phase == PaintPhaseForeground) 201 page->addRelevantUnpaintedObject(this, visualOverflowRect()); 202 return; 203 } 204 updatePlayer(); 198 if (!displayingPoster && !mediaPlayer) { 199 if (page && paintInfo.phase == PaintPhaseForeground) 200 page->addRelevantUnpaintedObject(this, visualOverflowRect()); 201 return; 205 202 } 206 203
Note: See TracChangeset
for help on using the changeset viewer.