Chromium Code Reviews| Index: Source/core/inspector/InspectorOverlay.cpp |
| diff --git a/Source/core/inspector/InspectorOverlay.cpp b/Source/core/inspector/InspectorOverlay.cpp |
| index 32016f3b1f56f21c13adb4c2c7a4e42263f4ecd1..d5ab4f36bd97dd7b02b247660d3a58468389f63f 100644 |
| --- a/Source/core/inspector/InspectorOverlay.cpp |
| +++ b/Source/core/inspector/InspectorOverlay.cpp |
| @@ -345,6 +345,7 @@ InspectorOverlay::InspectorOverlay(Page* page, InspectorClient* client) |
| , m_omitTooltip(false) |
| , m_timer(this, &InspectorOverlay::onTimer) |
| , m_activeProfilerCount(0) |
| + , m_updating(false) |
| { |
| } |
| @@ -365,6 +366,11 @@ void InspectorOverlay::paint(GraphicsContext& context) |
| void InspectorOverlay::invalidate() |
| { |
| + // Don't invalidate during an update, because that will lead to Document::scheduleRenderTreeUpdate |
| + // being called within Document::updateRenderTree which violates document lifecycle expectations. |
| + if (m_updating) |
| + return; |
| + |
| m_client->highlight(); |
|
dgozman
2014/12/06 12:34:18
This call usually just adds/removes a GraphicsLaye
|
| } |
| @@ -477,6 +483,8 @@ bool InspectorOverlay::isEmpty() |
| void InspectorOverlay::update() |
| { |
| + TemporaryChange<bool> scoped(m_updating, true); |
| + |
| if (isEmpty()) { |
| m_client->hideHighlight(); |
| return; |