author | Jim Mathies <jmathies@mozilla.com> |
Wed, 25 Nov 2015 12:11:00 -0600 | |
changeset 274241 | 7c9da18db90c17a96cf7c998ed10e4b1d4348bcb |
parent 274240 | f628ddbbbbffba2d9ef8235e5d3a66a6416bea1e |
child 274242 | 01d95c93748c86fc5781d54428b80f41699c9c7d |
push id | 68527 |
push user | cbook@mozilla.com |
push date | Thu, 26 Nov 2015 09:13:55 +0000 |
treeherder | mozilla-inbound@01d95c93748c [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | roc |
bugs | 1227666 |
milestone | 45.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
layout/base/nsDisplayList.cpp | file | annotate | diff | comparison | revisions | |
layout/base/nsPresContext.cpp | file | annotate | diff | comparison | revisions |
--- a/layout/base/nsDisplayList.cpp +++ b/layout/base/nsDisplayList.cpp @@ -1742,20 +1742,23 @@ already_AddRefed<LayerManager> nsDisplay // we don't need to worry about END_NO_COMPOSITE. if (aBuilder->WillComputePluginGeometry()) { flags = LayerManager::END_NO_REMOTE_COMPOSITE; } } // If this is the content process, we ship plugin geometry updates over with layer // updates, so calculate that now before we call EndTransaction. - if (rootPresContext && - aBuilder->WillComputePluginGeometry() && - XRE_IsContentProcess()) { - rootPresContext->ComputePluginGeometryUpdates(aBuilder->RootReferenceFrame(), aBuilder, this); + if (rootPresContext && XRE_IsContentProcess()) { + if (aBuilder->WillComputePluginGeometry()) { + rootPresContext->ComputePluginGeometryUpdates(aBuilder->RootReferenceFrame(), aBuilder, this); + } + // The layer system caches plugin configuration information for forwarding + // with layer updates which needs to get set during reflow. This must be + // called even if there are no windowed plugins in the page. rootPresContext->CollectPluginGeometryUpdates(layerManager); } MaybeSetupTransactionIdAllocator(layerManager, view); layerManager->EndTransaction(FrameLayerBuilder::DrawPaintedLayer, aBuilder, flags); aBuilder->SetIsCompositingCheap(temp);
--- a/layout/base/nsPresContext.cpp +++ b/layout/base/nsPresContext.cpp @@ -3201,16 +3201,22 @@ nsRootPresContext::CollectPluginGeometry { #ifndef XP_MACOSX // Collect and pass plugin widget configurations down to the compositor // for transmission to the chrome process. NS_ASSERTION(aLayerManager, "layer manager is invalid!"); mozilla::layers::ClientLayerManager* clm = aLayerManager->AsClientLayerManager(); nsTArray<nsIWidget::Configuration> configurations; + // If there aren't any plugins to configure, clear the plugin data cache + // in the layer system. + if (!mRegisteredPlugins.Count() && clm) { + clm->StorePluginWidgetConfigurations(configurations); + return; + } PluginGetGeometryUpdate(mRegisteredPlugins, &configurations); if (configurations.IsEmpty()) { PluginDidSetGeometry(mRegisteredPlugins); return; } SortConfigurations(&configurations); if (clm) { clm->StorePluginWidgetConfigurations(configurations);