diff options
author | Martin Stransky <stransky@redhat.com> | 2021-01-15 10:23:50 +0100 |
---|---|---|
committer | Martin Stransky <stransky@redhat.com> | 2021-01-15 10:23:50 +0100 |
commit | 8d06c8b3e1b581623d756e524ead56d0a427725c (patch) | |
tree | 0d4f1f6215f87455801dfcc588d99c8ee07a1807 /mozilla-1681107.patch | |
parent | firefox test package name fix (diff) | |
download | librewolf-fedora-ff-8d06c8b3e1b581623d756e524ead56d0a427725c.tar.gz librewolf-fedora-ff-8d06c8b3e1b581623d756e524ead56d0a427725c.tar.bz2 librewolf-fedora-ff-8d06c8b3e1b581623d756e524ead56d0a427725c.zip |
Added WebRender fix (mozbz#1681107).
Diffstat (limited to 'mozilla-1681107.patch')
-rw-r--r-- | mozilla-1681107.patch | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/mozilla-1681107.patch b/mozilla-1681107.patch new file mode 100644 index 0000000..e228e35 --- /dev/null +++ b/mozilla-1681107.patch @@ -0,0 +1,47 @@ + +# HG changeset patch +# User sotaro <sotaro.ikeda.g@gmail.com> +# Date 1610634595 0 +# Node ID c989e16ae8d0801b76efe712658abcbf3704a486 +# Parent dc0d1d98e111aa781333980c2561f534ea1ebb0b +Bug 1681107 - Fix race condition of calling CompositorBridgeChild::SendPause() r=rmader,stransky + +Differential Revision: https://phabricator.services.mozilla.com/D101693 + +diff --git a/widget/gtk/nsWindow.cpp b/widget/gtk/nsWindow.cpp +--- a/widget/gtk/nsWindow.cpp ++++ b/widget/gtk/nsWindow.cpp +@@ -5085,23 +5085,29 @@ void nsWindow::NativeMoveResize() { + if (mNeedsShow && mIsShown) { + NativeShow(true); + } + } + + void nsWindow::PauseRemoteRenderer() { + #ifdef MOZ_WAYLAND + if (!mIsDestroyed) { +- if (mContainer && moz_container_wayland_has_egl_window(mContainer)) { ++ if (mContainer) { + // Because wl_egl_window is destroyed on moz_container_unmap(), + // the current compositor cannot use it anymore. To avoid crash, + // pause the compositor and destroy EGLSurface & resume the compositor + // and re-create EGLSurface on next expose event. +- MOZ_ASSERT(GetRemoteRenderer()); +- if (CompositorBridgeChild* remoteRenderer = GetRemoteRenderer()) { ++ ++ // moz_container_wayland_has_egl_window() could not be used here, since ++ // there is a case that resume compositor is not completed yet. ++ ++ CompositorBridgeChild* remoteRenderer = GetRemoteRenderer(); ++ bool needsCompositorPause = !mNeedsCompositorResume && !!remoteRenderer && ++ mCompositorWidgetDelegate; ++ if (needsCompositorPause) { + // XXX slow sync IPC + remoteRenderer->SendPause(); + // Re-request initial draw callback + RefPtr<nsWindow> self(this); + moz_container_wayland_add_initial_draw_callback( + mContainer, [self]() -> void { + self->mNeedsCompositorResume = true; + self->MaybeResumeCompositor(); + |