Index: Source/web/WebPluginContainerImpl.cpp |
diff --git a/Source/web/WebPluginContainerImpl.cpp b/Source/web/WebPluginContainerImpl.cpp |
index 345eff5e97447b5ef2ed7a8101f562e9aa2d1248..40e90ed3df3261f3477397900a077d7f5377b05c 100644 |
--- a/Source/web/WebPluginContainerImpl.cpp |
+++ b/Source/web/WebPluginContainerImpl.cpp |
@@ -65,6 +65,7 @@ |
#include "core/plugins/PluginOcclusionSupport.h" |
#include "core/rendering/HitTestResult.h" |
#include "core/rendering/RenderBox.h" |
+#include "core/rendering/RenderLayer.h" |
#include "platform/HostWindow.h" |
#include "platform/KeyboardCodes.h" |
#include "platform/PlatformGestureEvent.h" |
@@ -288,15 +289,27 @@ void WebPluginContainerImpl::setWebLayer(WebLayer* layer) |
if (m_webLayer == layer) |
return; |
- // If anyone of the layers is null we need to switch between hardware |
- // and software compositing. |
- if (!m_webLayer || !layer) |
- m_element->scheduleSVGFilterLayerUpdateHack(); |
if (m_webLayer) |
GraphicsLayer::unregisterContentsLayer(m_webLayer); |
if (layer) |
GraphicsLayer::registerContentsLayer(layer); |
+ |
+ // If anyone of the layers is null we need to switch between hardware |
+ // and software compositing. |
+ bool needsCompositingUpdate = !m_webLayer || !layer; |
+ |
m_webLayer = layer; |
+ |
+ if (!needsCompositingUpdate) |
+ return; |
+ |
+ m_element->setNeedsCompositingUpdate(); |
+ // Being composited or not affects the self painting layer bit |
+ // on the RenderLayer. |
+ if (RenderPart* renderer = m_element->renderPart()) { |
+ RELEASE_ASSERT(renderer->hasLayer()); |
+ renderer->layer()->updateSelfPaintingLayer(); |
+ } |
} |
bool WebPluginContainerImpl::supportsPaginatedPrint() const |