Fixed crashes on multi-monitor systems
This commit is contained in:
parent
1f98173a5b
commit
949ba97268
65
D158747.diff
Normal file
65
D158747.diff
Normal file
@ -0,0 +1,65 @@
|
||||
diff --git a/widget/gtk/ScreenHelperGTK.cpp b/widget/gtk/ScreenHelperGTK.cpp
|
||||
--- a/widget/gtk/ScreenHelperGTK.cpp
|
||||
+++ b/widget/gtk/ScreenHelperGTK.cpp
|
||||
@@ -221,11 +221,11 @@
|
||||
refreshRate, contentsScale, defaultCssScale, dpi,
|
||||
Screen::IsPseudoDisplay::No);
|
||||
}
|
||||
|
||||
void ScreenGetterGtk::RefreshScreens() {
|
||||
- LOG_SCREEN("Refreshing screens");
|
||||
+ LOG_SCREEN("ScreenGetterGtk::RefreshScreens()");
|
||||
AutoTArray<RefPtr<Screen>, 4> screenList;
|
||||
|
||||
GdkScreen* defaultScreen = gdk_screen_get_default();
|
||||
gint numScreens = gdk_screen_get_n_monitors(defaultScreen);
|
||||
LOG_SCREEN("GDK reports %d screens", numScreens);
|
||||
@@ -387,16 +387,16 @@
|
||||
monitor->refresh, contentsScale, defaultCssScale,
|
||||
dpi, Screen::IsPseudoDisplay::No);
|
||||
}
|
||||
|
||||
void ScreenGetterWayland::RefreshScreens() {
|
||||
- LOG_SCREEN("Refreshing screens");
|
||||
+ LOG_SCREEN("ScreenGetterWayland::RefreshScreens()");
|
||||
AutoTArray<RefPtr<Screen>, 4> managerScreenList;
|
||||
|
||||
mScreenList.Clear();
|
||||
const gint numScreens = mMonitors.Length();
|
||||
- LOG_SCREEN("Wayland reports %d screens", numScreens);
|
||||
+ LOG_SCREEN("Wayland reports %d monitors", numScreens);
|
||||
for (gint i = 0; i < numScreens; i++) {
|
||||
RefPtr<Screen> screen = MakeScreenWayland(i);
|
||||
mScreenList.AppendElement(screen);
|
||||
managerScreenList.AppendElement(screen);
|
||||
}
|
||||
@@ -446,18 +446,27 @@
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
RefPtr<nsIScreen> ScreenGetterWayland::GetScreenForWindow(nsWindow* aWindow) {
|
||||
- if (mScreenList.IsEmpty()) {
|
||||
+ if (mMonitors.IsEmpty()) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
int monitor = GetMonitorForWindow(aWindow);
|
||||
if (monitor < 0) {
|
||||
return nullptr;
|
||||
}
|
||||
+
|
||||
+ if (mMonitors.Length() != mScreenList.Length()) {
|
||||
+ // Gtk list of GtkScreens are out of sync with our monitor list.
|
||||
+ // Try to refresh it now.
|
||||
+ RefreshScreens();
|
||||
+ }
|
||||
+
|
||||
+ MOZ_DIAGNOSTIC_ASSERT((unsigned)monitor < mScreenList.Length(),
|
||||
+ "We're missing screen?");
|
||||
return mScreenList[monitor];
|
||||
}
|
||||
|
||||
static bool IsGNOMECompositor() {
|
||||
const char* currentDesktop = getenv("XDG_CURRENT_DESKTOP");
|
||||
|
@ -163,7 +163,7 @@ ExcludeArch: i686
|
||||
Summary: Mozilla Firefox Web browser
|
||||
Name: firefox
|
||||
Version: 105.0.2
|
||||
Release: 1%{?pre_tag}%{?dist}
|
||||
Release: 2%{?pre_tag}%{?dist}
|
||||
URL: https://www.mozilla.org/firefox/
|
||||
License: MPLv1.1 or GPLv2+ or LGPLv2+
|
||||
Source0: https://archive.mozilla.org/pub/firefox/releases/%{version}%{?pre_version}/source/firefox-%{version}%{?pre_version}.source.tar.xz
|
||||
@ -243,6 +243,7 @@ Patch407: mozilla-1667096.patch
|
||||
Patch408: mozilla-1663844.patch
|
||||
Patch415: mozilla-1670333.patch
|
||||
Patch416: mozilla-1791856.patch
|
||||
Patch417: D158747.diff
|
||||
|
||||
# PGO/LTO patches
|
||||
Patch600: pgo.patch
|
||||
@ -501,6 +502,7 @@ This package contains results of tests executed during build.
|
||||
%patch408 -p1 -b .1663844
|
||||
%patch415 -p1 -b .1670333
|
||||
%patch416 -p1 -b .1791856
|
||||
%patch417 -p1 -b .D158747
|
||||
|
||||
# PGO patches
|
||||
%if %{build_with_pgo}
|
||||
@ -1090,6 +1092,9 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
|
||||
#---------------------------------------------------------------------
|
||||
|
||||
%changelog
|
||||
* Fri Oct 14 2022 Martin Stransky <stransky@redhat.com>- 105.0.2-2
|
||||
- Fixed crashes on multi-monitor systems (mzbz#1793922)
|
||||
|
||||
* Wed Oct 5 2022 Martin Stransky <stransky@redhat.com>- 105.0.2-1
|
||||
- Updated to 105.0.2
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user