Bug 1722258 - Convert more LayerManager usage to use WindowRenderer. r=miko
Differential Revision: https://phabricator.services.mozilla.com/D120920
This commit is contained in:
@@ -21,6 +21,7 @@
|
||||
#include "mozilla/PresShell.h"
|
||||
#include "mozilla/SchedulerGroup.h"
|
||||
#include "mozilla/StaticPrefs_browser.h"
|
||||
#include "mozilla/StaticPrefs_gfx.h"
|
||||
#include "mozilla/TextComposition.h"
|
||||
#include "mozilla/TextEventDispatcher.h"
|
||||
#include "mozilla/TextEvents.h"
|
||||
@@ -117,7 +118,7 @@ void PuppetWidget::InfallibleCreate(nsIWidget* aParent,
|
||||
PuppetWidget* parent = static_cast<PuppetWidget*>(aParent);
|
||||
if (parent) {
|
||||
parent->SetChild(this);
|
||||
mLayerManager = parent->GetWindowRenderer()->AsLayerManager();
|
||||
mWindowRenderer = parent->GetWindowRenderer();
|
||||
} else {
|
||||
Resize(mBounds.X(), mBounds.Y(), mBounds.Width(), mBounds.Height(), false);
|
||||
}
|
||||
@@ -165,10 +166,10 @@ void PuppetWidget::Destroy() {
|
||||
mMemoryPressureObserver = nullptr;
|
||||
}
|
||||
mChild = nullptr;
|
||||
if (mLayerManager) {
|
||||
mLayerManager->Destroy();
|
||||
if (mWindowRenderer) {
|
||||
mWindowRenderer->Destroy();
|
||||
}
|
||||
mLayerManager = nullptr;
|
||||
mWindowRenderer = nullptr;
|
||||
mBrowserChild = nullptr;
|
||||
}
|
||||
|
||||
@@ -586,13 +587,13 @@ bool PuppetWidget::GetEditCommands(NativeKeyBindingsType aType,
|
||||
}
|
||||
|
||||
WindowRenderer* PuppetWidget::GetWindowRenderer() {
|
||||
if (!mLayerManager) {
|
||||
if (!mWindowRenderer) {
|
||||
if (XRE_IsParentProcess()) {
|
||||
// On the parent process there is no CompositorBridgeChild which confuses
|
||||
// some layers code, so we use basic layers instead. Note that we create
|
||||
// a non-retaining layer manager since we don't care about performance.
|
||||
mLayerManager = new BasicLayerManager(BasicLayerManager::BLM_OFFSCREEN);
|
||||
return mLayerManager;
|
||||
mWindowRenderer = new BasicLayerManager(BasicLayerManager::BLM_OFFSCREEN);
|
||||
return mWindowRenderer;
|
||||
}
|
||||
|
||||
// If we know for sure that the parent side of this BrowserChild is not
|
||||
@@ -601,10 +602,10 @@ WindowRenderer* PuppetWidget::GetWindowRenderer() {
|
||||
// can do drawing in this process.
|
||||
MOZ_ASSERT(!mBrowserChild ||
|
||||
mBrowserChild->IsLayersConnected() != Some(true));
|
||||
mLayerManager = new BasicLayerManager(this);
|
||||
mWindowRenderer = CreateBasicLayerManager();
|
||||
}
|
||||
|
||||
return mLayerManager;
|
||||
return mWindowRenderer;
|
||||
}
|
||||
|
||||
bool PuppetWidget::CreateRemoteLayerManager(
|
||||
@@ -626,7 +627,7 @@ bool PuppetWidget::CreateRemoteLayerManager(
|
||||
// it if we successfully create its successor because a partially initialized
|
||||
// layer manager is worse than a fully initialized but shutdown layer manager.
|
||||
DestroyLayerManager();
|
||||
mLayerManager = std::move(lm);
|
||||
mWindowRenderer = std::move(lm);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1006,8 +1007,9 @@ void PuppetWidget::PaintNowIfNeeded() {
|
||||
|
||||
void PuppetWidget::OnMemoryPressure(layers::MemoryPressureReason aWhy) {
|
||||
if (aWhy != MemoryPressureReason::LOW_MEMORY_ONGOING && !mVisible &&
|
||||
mLayerManager && XRE_IsContentProcess()) {
|
||||
mLayerManager->ClearCachedResources();
|
||||
mWindowRenderer && mWindowRenderer->AsLayerManager() &&
|
||||
XRE_IsContentProcess()) {
|
||||
mWindowRenderer->AsLayerManager()->ClearCachedResources();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user