Bug 1722258 - Convert more LayerManager usage to use WindowRenderer. r=miko

Differential Revision: https://phabricator.services.mozilla.com/D120920
This commit is contained in:
Matt Woodrow
2021-07-28 20:58:22 +00:00
parent 2ad605e75d
commit 5436ad0e68
20 changed files with 220 additions and 186 deletions

View File

@@ -705,10 +705,10 @@ void nsWindow::Destroy() {
mCreated = false;
/** Need to clean our LayerManager up while still alive */
if (mLayerManager) {
mLayerManager->Destroy();
if (mWindowRenderer) {
mWindowRenderer->Destroy();
}
mLayerManager = nullptr;
mWindowRenderer = nullptr;
#ifdef MOZ_WAYLAND
// Shut down our local vsync source
@@ -3529,7 +3529,8 @@ gboolean nsWindow::OnExposeEvent(cairo_t* cr) {
bool painted = false;
{
if (renderer->GetBackendType() == LayersBackend::LAYERS_BASIC) {
if (renderer->GetBackendType() == LayersBackend::LAYERS_NONE ||
renderer->GetBackendType() == LayersBackend::LAYERS_BASIC) {
if (GetTransparencyMode() == eTransparencyTransparent &&
layerBuffering == BufferMode::BUFFER_NONE && mHasAlphaVisual) {
// If our draw target is unbuffered and we use an alpha channel,
@@ -6117,9 +6118,9 @@ LayoutDeviceIntSize nsWindow::GetSafeWindowSize(LayoutDeviceIntSize aSize) {
// we also must ensure that the window can fit in a Cairo surface.
LayoutDeviceIntSize result = aSize;
int32_t maxSize = 32767;
if (mLayerManager && mLayerManager->AsKnowsCompositor()) {
maxSize = std::min(maxSize,
mLayerManager->AsKnowsCompositor()->GetMaxTextureSize());
if (mWindowRenderer && mWindowRenderer->AsKnowsCompositor()) {
maxSize = std::min(
maxSize, mWindowRenderer->AsKnowsCompositor()->GetMaxTextureSize());
}
if (result.width > maxSize) {
result.width = maxSize;
@@ -6135,9 +6136,9 @@ void nsWindow::EnsureGrabs(void) {
}
void nsWindow::CleanLayerManagerRecursive(void) {
if (mLayerManager) {
mLayerManager->Destroy();
mLayerManager = nullptr;
if (mWindowRenderer) {
mWindowRenderer->Destroy();
mWindowRenderer = nullptr;
}
DestroyCompositor();
@@ -8284,7 +8285,7 @@ nsIWidget::WindowRenderer* nsWindow::GetWindowRenderer() {
// Prevent external code from triggering the re-creation of the
// LayerManager/Compositor during shutdown. Just return what we currently
// have, which is most likely null.
return mLayerManager;
return mWindowRenderer;
}
return nsBaseWidget::GetWindowRenderer();
@@ -8305,9 +8306,9 @@ void nsWindow::SetCompositorWidgetDelegate(CompositorWidgetDelegate* delegate) {
}
void nsWindow::ClearCachedResources() {
if (mLayerManager && mLayerManager->GetBackendType() ==
mozilla::layers::LayersBackend::LAYERS_BASIC) {
mLayerManager->ClearCachedResources();
if (mWindowRenderer && mWindowRenderer->GetBackendType() ==
mozilla::layers::LayersBackend::LAYERS_BASIC) {
mWindowRenderer->AsLayerManager()->ClearCachedResources();
}
GList* children = gdk_window_peek_children(mGdkWindow);