diff --git a/modules/libpref/init/all.js b/modules/libpref/init/all.js --- a/modules/libpref/init/all.js +++ b/modules/libpref/init/all.js @@ -4018,6 +4018,7 @@ #endif #ifdef MOZ_WAYLAND pref("widget.wayland_vsync.enabled", false); + pref("widget.wayland.use-opaque-region", true); #endif // All the Geolocation preferences are here. diff --git a/widget/gtk/nsWindow.cpp b/widget/gtk/nsWindow.cpp --- a/widget/gtk/nsWindow.cpp +++ b/widget/gtk/nsWindow.cpp @@ -333,6 +333,7 @@ static bool gGlobalsInitialized = false; static bool gRaiseWindows = true; static bool gUseWaylandVsync = false; +static bool gUseWaylandUseOpaqueRegion = true; static GList* gVisibleWaylandPopupWindows = nullptr; #if GTK_CHECK_VERSION(3, 4, 0) @@ -4955,6 +4956,10 @@ } void nsWindow::UpdateTopLevelOpaqueRegionWayland(bool aSubtractCorners) { + if (!gUseWaylandUseOpaqueRegion) { + return; + } + wl_surface* surface = moz_gtk_widget_get_wl_surface(GTK_WIDGET(mShell)); if (!surface) { return; @@ -6690,6 +6695,9 @@ Preferences::GetBool("mozilla.widget.raise-on-setfocus", true); gUseWaylandVsync = Preferences::GetBool("widget.wayland_vsync.enabled", false); + gUseWaylandUseOpaqueRegion = + Preferences::GetBool("widget.wayland.use-opaque-region", true); + return NS_OK; }