merge
This commit is contained in:
commit
bacd3c4200
2
.gitignore
vendored
2
.gitignore
vendored
@ -485,3 +485,5 @@ firefox-3.6.4.source.tar.bz2
|
||||
/firefox-langpacks-95.0-20211203.tar.xz
|
||||
/firefox-95.0.2.source.tar.xz
|
||||
/firefox-langpacks-95.0.2-20211220.tar.xz
|
||||
/firefox-96.0.source.tar.xz
|
||||
/firefox-langpacks-96.0-20220111.tar.xz
|
||||
|
18
D132929.diff
Normal file
18
D132929.diff
Normal file
@ -0,0 +1,18 @@
|
||||
diff --git a/widget/gtk/nsWindow.cpp b/widget/gtk/nsWindow.cpp
|
||||
--- a/widget/gtk/nsWindow.cpp
|
||||
+++ b/widget/gtk/nsWindow.cpp
|
||||
@@ -2946,7 +2946,12 @@
|
||||
uint32_t timestamp = GDK_CURRENT_TIME;
|
||||
|
||||
nsGTKToolkit* GTKToolkit = nsGTKToolkit::GetToolkit();
|
||||
- if (GTKToolkit) timestamp = GTKToolkit->GetFocusTimestamp();
|
||||
+ if (GTKToolkit) {
|
||||
+ timestamp = GTKToolkit->GetFocusTimestamp();
|
||||
+ }
|
||||
+ if (!timestamp) {
|
||||
+ timestamp = GetLastUserInputTime();
|
||||
+ }
|
||||
|
||||
LOG(" requesting toplevel activation [%p]\n", (void*)toplevelWindow);
|
||||
gtk_window_present_with_time(GTK_WINDOW(toplevelWindow->mShell),
|
||||
|
197
D133209.diff
Normal file
197
D133209.diff
Normal file
@ -0,0 +1,197 @@
|
||||
diff --git a/widget/gtk/nsGtkKeyUtils.h b/widget/gtk/nsGtkKeyUtils.h
|
||||
--- a/widget/gtk/nsGtkKeyUtils.h
|
||||
+++ b/widget/gtk/nsGtkKeyUtils.h
|
||||
@@ -202,6 +202,22 @@
|
||||
* from xkb_keymap. We call that from Wayland backend routines.
|
||||
*/
|
||||
static void SetModifierMasks(xkb_keymap* aKeymap);
|
||||
+
|
||||
+ /**
|
||||
+ * Wayland global focus handlers
|
||||
+ */
|
||||
+ static void SetFocusIn(wl_surface* aFocusSurface, uint32_t aFocusSerial);
|
||||
+ static void SetFocusOut(wl_surface* aFocusSurface);
|
||||
+ static void GetFocusInfo(wl_surface** aFocusSurface, uint32_t* aFocusSerial);
|
||||
+
|
||||
+ static void SetSeat(wl_seat* aSeat);
|
||||
+ static wl_seat* GetSeat();
|
||||
+
|
||||
+ /**
|
||||
+ * EnsureInstance() is provided on Wayland to register Wayland callbacks
|
||||
+ * early.
|
||||
+ */
|
||||
+ static void EnsureInstance();
|
||||
#endif
|
||||
|
||||
/**
|
||||
@@ -467,6 +483,12 @@
|
||||
void SetModifierMask(xkb_keymap* aKeymap, ModifierIndex aModifierIndex,
|
||||
const char* aModifierName);
|
||||
#endif
|
||||
+
|
||||
+#ifdef MOZ_WAYLAND
|
||||
+ wl_seat* mSeat = nullptr;
|
||||
+ wl_surface* mFocusSurface = nullptr;
|
||||
+ uint32_t mFocusSerial = 0;
|
||||
+#endif
|
||||
};
|
||||
|
||||
} // namespace widget
|
||||
diff --git a/widget/gtk/nsGtkKeyUtils.cpp b/widget/gtk/nsGtkKeyUtils.cpp
|
||||
--- a/widget/gtk/nsGtkKeyUtils.cpp
|
||||
+++ b/widget/gtk/nsGtkKeyUtils.cpp
|
||||
@@ -331,6 +331,10 @@
|
||||
return sInstance;
|
||||
}
|
||||
|
||||
+#ifdef MOZ_WAYLAND
|
||||
+void KeymapWrapper::EnsureInstance() { (void)GetInstance(); }
|
||||
+#endif
|
||||
+
|
||||
/* static */
|
||||
void KeymapWrapper::Shutdown() {
|
||||
if (sInstance) {
|
||||
@@ -720,10 +724,15 @@
|
||||
|
||||
static void keyboard_handle_enter(void* data, struct wl_keyboard* keyboard,
|
||||
uint32_t serial, struct wl_surface* surface,
|
||||
- struct wl_array* keys) {}
|
||||
+ struct wl_array* keys) {
|
||||
+ KeymapWrapper::SetFocusIn(surface, serial);
|
||||
+}
|
||||
+
|
||||
static void keyboard_handle_leave(void* data, struct wl_keyboard* keyboard,
|
||||
uint32_t serial, struct wl_surface* surface) {
|
||||
+ KeymapWrapper::SetFocusOut(surface);
|
||||
}
|
||||
+
|
||||
static void keyboard_handle_key(void* data, struct wl_keyboard* keyboard,
|
||||
uint32_t serial, uint32_t time, uint32_t key,
|
||||
uint32_t state) {}
|
||||
@@ -760,6 +769,7 @@
|
||||
if (strcmp(interface, "wl_seat") == 0) {
|
||||
auto* seat =
|
||||
WaylandRegistryBind<wl_seat>(registry, id, &wl_seat_interface, 1);
|
||||
+ KeymapWrapper::SetSeat(seat);
|
||||
wl_seat_add_listener(seat, &seat_listener, data);
|
||||
}
|
||||
}
|
||||
@@ -2411,5 +2421,40 @@
|
||||
altLatinCharCodes.mShiftedCharCode));
|
||||
}
|
||||
|
||||
+#ifdef MOZ_WAYLAND
|
||||
+void KeymapWrapper::SetFocusIn(wl_surface* aFocusSurface,
|
||||
+ uint32_t aFocusSerial) {
|
||||
+ KeymapWrapper* keymapWrapper = KeymapWrapper::GetInstance();
|
||||
+ keymapWrapper->mFocusSurface = aFocusSurface;
|
||||
+ keymapWrapper->mFocusSerial = aFocusSerial;
|
||||
+}
|
||||
+
|
||||
+void KeymapWrapper::SetFocusOut(wl_surface* aFocusSurface) {
|
||||
+ KeymapWrapper* keymapWrapper = KeymapWrapper::GetInstance();
|
||||
+ if (aFocusSurface == keymapWrapper->mFocusSurface) {
|
||||
+ keymapWrapper->mFocusSurface = nullptr;
|
||||
+ keymapWrapper->mFocusSerial = 0;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+void KeymapWrapper::GetFocusInfo(wl_surface** aFocusSurface,
|
||||
+ uint32_t* aFocusSerial) {
|
||||
+ KeymapWrapper* keymapWrapper = KeymapWrapper::GetInstance();
|
||||
+ *aFocusSurface = keymapWrapper->mFocusSurface;
|
||||
+ *aFocusSerial = keymapWrapper->mFocusSerial;
|
||||
+}
|
||||
+
|
||||
+void KeymapWrapper::SetSeat(wl_seat* aSeat) {
|
||||
+ KeymapWrapper* keymapWrapper = KeymapWrapper::GetInstance();
|
||||
+ keymapWrapper->mSeat = aSeat;
|
||||
+}
|
||||
+
|
||||
+wl_seat* KeymapWrapper::GetSeat() {
|
||||
+ KeymapWrapper* keymapWrapper = KeymapWrapper::GetInstance();
|
||||
+ return keymapWrapper->mSeat;
|
||||
+}
|
||||
+
|
||||
+#endif
|
||||
+
|
||||
} // namespace widget
|
||||
} // namespace mozilla
|
||||
diff --git a/widget/gtk/nsWindow.cpp b/widget/gtk/nsWindow.cpp
|
||||
--- a/widget/gtk/nsWindow.cpp
|
||||
+++ b/widget/gtk/nsWindow.cpp
|
||||
@@ -2862,8 +2862,7 @@
|
||||
};
|
||||
|
||||
void nsWindow::RequestFocusWaylandWindow(RefPtr<nsWindow> aWindow) {
|
||||
- LOG("nsWindow::RequestWindowFocusWayland(%p) gFocusWindow [%p]",
|
||||
- (void*)aWindow, gFocusWindow);
|
||||
+ LOG("nsWindow::RequestWindowFocusWayland(%p)", (void*)aWindow);
|
||||
|
||||
RefPtr<nsWaylandDisplay> display = WaylandDisplayGet();
|
||||
xdg_activation_v1* xdg_activation = display->GetXdgActivation();
|
||||
@@ -2872,17 +2871,11 @@
|
||||
return;
|
||||
}
|
||||
|
||||
- // We use xdg-activation protocol to transfer focus from gFocusWindow to
|
||||
- // aWindow. Quit if no window is focused.
|
||||
- if (gFocusWindow != this) {
|
||||
- LOG(" there isn't any focused window to transfer focus from, quit.");
|
||||
- return;
|
||||
- }
|
||||
-
|
||||
- wl_surface* surface =
|
||||
- mGdkWindow ? gdk_wayland_window_get_wl_surface(mGdkWindow) : nullptr;
|
||||
- if (!surface) {
|
||||
- LOG(" requesting window is hidden/unmapped, quit.");
|
||||
+ wl_surface* focusSurface;
|
||||
+ uint32_t focusSerial;
|
||||
+ KeymapWrapper::GetFocusInfo(&focusSurface, &focusSerial);
|
||||
+ if (!focusSurface) {
|
||||
+ LOG(" We're missing focused window, quit.");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -2894,9 +2887,9 @@
|
||||
// callback.
|
||||
xdg_activation_token_v1_add_listener(aWindow->mXdgToken, &token_listener,
|
||||
do_AddRef(aWindow).take());
|
||||
- xdg_activation_token_v1_set_serial(aWindow->mXdgToken, GetLastUserInputTime(),
|
||||
- display->GetSeat());
|
||||
- xdg_activation_token_v1_set_surface(aWindow->mXdgToken, surface);
|
||||
+ xdg_activation_token_v1_set_serial(aWindow->mXdgToken, focusSerial,
|
||||
+ KeymapWrapper::GetSeat());
|
||||
+ xdg_activation_token_v1_set_surface(aWindow->mXdgToken, focusSurface);
|
||||
xdg_activation_token_v1_commit(aWindow->mXdgToken);
|
||||
}
|
||||
#endif
|
||||
@@ -2959,11 +2952,7 @@
|
||||
|
||||
#ifdef MOZ_WAYLAND
|
||||
if (GdkIsWaylandDisplay()) {
|
||||
- if (gFocusWindow) {
|
||||
- gFocusWindow->RequestFocusWaylandWindow(toplevelWindow);
|
||||
- } else {
|
||||
- LOG(" RequestFocusWaylandWindow(): we're missing focused window!");
|
||||
- }
|
||||
+ RequestFocusWaylandWindow(toplevelWindow);
|
||||
}
|
||||
#endif
|
||||
if (GTKToolkit) GTKToolkit->SetFocusTimestamp(0);
|
||||
@@ -5359,6 +5348,14 @@
|
||||
a11y::PreInit();
|
||||
#endif
|
||||
|
||||
+#ifdef MOZ_WAYLAND
|
||||
+ // Ensure that KeymapWrapper is created on Wayland as we need it for
|
||||
+ // keyboard focus tracking.
|
||||
+ if (GdkIsWaylandDisplay()) {
|
||||
+ KeymapWrapper::EnsureInstance();
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
// Ensure that the toolkit is created.
|
||||
nsGTKToolkit::GetToolkit();
|
||||
|
||||
|
31
D133485.diff
Normal file
31
D133485.diff
Normal file
@ -0,0 +1,31 @@
|
||||
diff --git a/widget/gtk/nsWindow.cpp b/widget/gtk/nsWindow.cpp
|
||||
--- a/widget/gtk/nsWindow.cpp
|
||||
+++ b/widget/gtk/nsWindow.cpp
|
||||
@@ -2879,6 +2879,10 @@
|
||||
return;
|
||||
}
|
||||
|
||||
+ LOG(" requesting xdg-activation token, surface ID %d serial %d seat ID %d",
|
||||
+ wl_proxy_get_id((struct wl_proxy*)focusSurface), focusSerial,
|
||||
+ wl_proxy_get_id((struct wl_proxy*)KeymapWrapper::GetSeat()));
|
||||
+
|
||||
// Store activation token at activated window for further release.
|
||||
g_clear_pointer(&aWindow->mXdgToken, xdg_activation_token_v1_destroy);
|
||||
aWindow->mXdgToken = xdg_activation_v1_get_activation_token(xdg_activation);
|
||||
@@ -2941,6 +2945,7 @@
|
||||
nsGTKToolkit* GTKToolkit = nsGTKToolkit::GetToolkit();
|
||||
if (GTKToolkit) {
|
||||
timestamp = GTKToolkit->GetFocusTimestamp();
|
||||
+ GTKToolkit->SetFocusTimestamp(0);
|
||||
}
|
||||
if (!timestamp) {
|
||||
timestamp = GetLastUserInputTime();
|
||||
@@ -2955,7 +2960,6 @@
|
||||
RequestFocusWaylandWindow(toplevelWindow);
|
||||
}
|
||||
#endif
|
||||
- if (GTKToolkit) GTKToolkit->SetFocusTimestamp(0);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
119
D133634.diff
Normal file
119
D133634.diff
Normal file
@ -0,0 +1,119 @@
|
||||
diff --git a/widget/gtk/nsGtkKeyUtils.cpp b/widget/gtk/nsGtkKeyUtils.cpp
|
||||
--- a/widget/gtk/nsGtkKeyUtils.cpp
|
||||
+++ b/widget/gtk/nsGtkKeyUtils.cpp
|
||||
@@ -2424,17 +2424,23 @@
|
||||
#ifdef MOZ_WAYLAND
|
||||
void KeymapWrapper::SetFocusIn(wl_surface* aFocusSurface,
|
||||
uint32_t aFocusSerial) {
|
||||
+ LOGW("KeymapWrapper::SetFocusIn() surface %p ID %d serial %d", aFocusSurface,
|
||||
+ aFocusSurface ? wl_proxy_get_id((struct wl_proxy*)aFocusSurface) : 0,
|
||||
+ aFocusSerial);
|
||||
+
|
||||
KeymapWrapper* keymapWrapper = KeymapWrapper::GetInstance();
|
||||
keymapWrapper->mFocusSurface = aFocusSurface;
|
||||
keymapWrapper->mFocusSerial = aFocusSerial;
|
||||
}
|
||||
|
||||
+// aFocusSurface can be null in case that focused surface is already destroyed.
|
||||
void KeymapWrapper::SetFocusOut(wl_surface* aFocusSurface) {
|
||||
KeymapWrapper* keymapWrapper = KeymapWrapper::GetInstance();
|
||||
- if (aFocusSurface == keymapWrapper->mFocusSurface) {
|
||||
- keymapWrapper->mFocusSurface = nullptr;
|
||||
- keymapWrapper->mFocusSerial = 0;
|
||||
- }
|
||||
+ LOGW("KeymapWrapper::SetFocusOut surface %p ID %d", aFocusSurface,
|
||||
+ aFocusSurface ? wl_proxy_get_id((struct wl_proxy*)aFocusSurface) : 0);
|
||||
+
|
||||
+ keymapWrapper->mFocusSurface = nullptr;
|
||||
+ keymapWrapper->mFocusSerial = 0;
|
||||
}
|
||||
|
||||
void KeymapWrapper::GetFocusInfo(wl_surface** aFocusSurface,
|
||||
@@ -2453,7 +2459,6 @@
|
||||
KeymapWrapper* keymapWrapper = KeymapWrapper::GetInstance();
|
||||
return keymapWrapper->mSeat;
|
||||
}
|
||||
-
|
||||
#endif
|
||||
|
||||
} // namespace widget
|
||||
diff --git a/widget/gtk/nsWindow.h b/widget/gtk/nsWindow.h
|
||||
--- a/widget/gtk/nsWindow.h
|
||||
+++ b/widget/gtk/nsWindow.h
|
||||
@@ -386,8 +386,7 @@
|
||||
|
||||
#ifdef MOZ_WAYLAND
|
||||
// Use xdg-activation protocol to transfer focus from gFocusWindow to aWindow.
|
||||
- // RequestFocusWaylandWindow needs to be called on focused window only.
|
||||
- void RequestFocusWaylandWindow(RefPtr<nsWindow> aWindow);
|
||||
+ static void RequestFocusWaylandWindow(RefPtr<nsWindow> aWindow);
|
||||
void FocusWaylandWindow(const char* aTokenID);
|
||||
|
||||
bool GetCSDDecorationOffset(int* aDx, int* aDy);
|
||||
diff --git a/widget/gtk/nsWindow.cpp b/widget/gtk/nsWindow.cpp
|
||||
--- a/widget/gtk/nsWindow.cpp
|
||||
+++ b/widget/gtk/nsWindow.cpp
|
||||
@@ -2845,6 +2845,9 @@
|
||||
return;
|
||||
}
|
||||
|
||||
+ LOG(" requesting xdg-activation, surface ID %d",
|
||||
+ wl_proxy_get_id((struct wl_proxy*)surface));
|
||||
+
|
||||
xdg_activation_v1* xdg_activation = WaylandDisplayGet()->GetXdgActivation();
|
||||
xdg_activation_v1_activate(xdg_activation, aTokenID, surface);
|
||||
}
|
||||
@@ -2862,12 +2865,17 @@
|
||||
};
|
||||
|
||||
void nsWindow::RequestFocusWaylandWindow(RefPtr<nsWindow> aWindow) {
|
||||
- LOG("nsWindow::RequestWindowFocusWayland(%p)", (void*)aWindow);
|
||||
+ LOGW("nsWindow::RequestFocusWaylandWindow(%p) gFocusWindow %p",
|
||||
+ (void*)aWindow, gFocusWindow);
|
||||
+
|
||||
+ if (!gFocusWindow) {
|
||||
+ LOGW(" missing gFocusWindow, quit.");
|
||||
+ }
|
||||
|
||||
RefPtr<nsWaylandDisplay> display = WaylandDisplayGet();
|
||||
xdg_activation_v1* xdg_activation = display->GetXdgActivation();
|
||||
if (!xdg_activation) {
|
||||
- LOG(" xdg-activation is missing, quit.");
|
||||
+ LOGW(" xdg-activation is missing, quit.");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -2875,13 +2883,25 @@
|
||||
uint32_t focusSerial;
|
||||
KeymapWrapper::GetFocusInfo(&focusSurface, &focusSerial);
|
||||
if (!focusSurface) {
|
||||
- LOG(" We're missing focused window, quit.");
|
||||
- return;
|
||||
- }
|
||||
-
|
||||
- LOG(" requesting xdg-activation token, surface ID %d serial %d seat ID %d",
|
||||
- wl_proxy_get_id((struct wl_proxy*)focusSurface), focusSerial,
|
||||
- wl_proxy_get_id((struct wl_proxy*)KeymapWrapper::GetSeat()));
|
||||
+ LOGW(" We're missing focused window, quit.");
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ GdkWindow* gdkWindow = gtk_widget_get_window(gFocusWindow->mShell);
|
||||
+ wl_surface* surface =
|
||||
+ gdkWindow ? gdk_wayland_window_get_wl_surface(gdkWindow) : nullptr;
|
||||
+ if (focusSurface != surface) {
|
||||
+ LOGW(" focused surface %p and gFocusWindow surface %p don't match, quit.",
|
||||
+ focusSurface, surface);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ LOGW(
|
||||
+ " requesting xdg-activation token, surface %p ID %d serial %d seat ID "
|
||||
+ "%d",
|
||||
+ focusSurface,
|
||||
+ focusSurface ? wl_proxy_get_id((struct wl_proxy*)focusSurface) : 0,
|
||||
+ focusSerial, wl_proxy_get_id((struct wl_proxy*)KeymapWrapper::GetSeat()));
|
||||
|
||||
// Store activation token at activated window for further release.
|
||||
g_clear_pointer(&aWindow->mXdgToken, xdg_activation_token_v1_destroy);
|
||||
|
33
D133885.diff
Normal file
33
D133885.diff
Normal file
@ -0,0 +1,33 @@
|
||||
diff --git a/widget/gtk/nsWindow.cpp b/widget/gtk/nsWindow.cpp
|
||||
--- a/widget/gtk/nsWindow.cpp
|
||||
+++ b/widget/gtk/nsWindow.cpp
|
||||
@@ -2868,7 +2868,7 @@
|
||||
LOGW("nsWindow::RequestFocusWaylandWindow(%p) gFocusWindow %p",
|
||||
(void*)aWindow, gFocusWindow);
|
||||
|
||||
- if (!gFocusWindow) {
|
||||
+ if (!gFocusWindow || gFocusWindow->IsDestroyed()) {
|
||||
LOGW(" missing gFocusWindow, quit.");
|
||||
}
|
||||
|
||||
@@ -2883,13 +2883,16 @@
|
||||
uint32_t focusSerial;
|
||||
KeymapWrapper::GetFocusInfo(&focusSurface, &focusSerial);
|
||||
if (!focusSurface) {
|
||||
- LOGW(" We're missing focused window, quit.");
|
||||
+ LOGW(" We're missing KeymapWrapper focused window, quit.");
|
||||
return;
|
||||
}
|
||||
|
||||
GdkWindow* gdkWindow = gtk_widget_get_window(gFocusWindow->mShell);
|
||||
- wl_surface* surface =
|
||||
- gdkWindow ? gdk_wayland_window_get_wl_surface(gdkWindow) : nullptr;
|
||||
+ if (!gdkWindow) {
|
||||
+ LOGW(" gFocusWindow is not mapped, quit.");
|
||||
+ return;
|
||||
+ }
|
||||
+ wl_surface* surface = gdk_wayland_window_get_wl_surface(gdkWindow);
|
||||
if (focusSurface != surface) {
|
||||
LOGW(" focused surface %p and gFocusWindow surface %p don't match, quit.",
|
||||
focusSurface, surface);
|
||||
|
12
D134141.diff
Normal file
12
D134141.diff
Normal file
@ -0,0 +1,12 @@
|
||||
diff --git a/widget/gtk/nsWindow.cpp b/widget/gtk/nsWindow.cpp
|
||||
--- a/widget/gtk/nsWindow.cpp
|
||||
+++ b/widget/gtk/nsWindow.cpp
|
||||
@@ -2870,6 +2870,7 @@
|
||||
|
||||
if (!gFocusWindow || gFocusWindow->IsDestroyed()) {
|
||||
LOGW(" missing gFocusWindow, quit.");
|
||||
+ return;
|
||||
}
|
||||
|
||||
RefPtr<nsWaylandDisplay> display = WaylandDisplayGet();
|
||||
|
30
firefox.spec
30
firefox.spec
@ -162,13 +162,13 @@ ExcludeArch: aarch64
|
||||
|
||||
Summary: Mozilla Firefox Web browser
|
||||
Name: firefox
|
||||
Version: 95.0.2
|
||||
Release: 5%{?pre_tag}%{?dist}
|
||||
Version: 96.0
|
||||
Release: 1%{?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
|
||||
%if %{with langpacks}
|
||||
Source1: firefox-langpacks-%{version}%{?pre_version}-20211220.tar.xz
|
||||
Source1: firefox-langpacks-%{version}%{?pre_version}-20220111.tar.xz
|
||||
%endif
|
||||
Source2: cbindgen-vendor.tar.xz
|
||||
Source10: firefox-mozconfig
|
||||
@ -219,7 +219,6 @@ Patch55: firefox-testing.patch
|
||||
Patch57: firefox-disable-ffvpx-with-vapi.patch
|
||||
Patch61: firefox-glibc-dynstack.patch
|
||||
Patch62: build-python.patch
|
||||
Patch63: mozilla-1745560.patch
|
||||
|
||||
# Test patches
|
||||
# Generate without context by
|
||||
@ -244,8 +243,13 @@ Patch402: mozilla-1196777.patch
|
||||
Patch407: mozilla-1667096.patch
|
||||
Patch408: mozilla-1663844.patch
|
||||
Patch415: mozilla-1670333.patch
|
||||
Patch420: mochitest-wayland-workaround.patch
|
||||
Patch421: mozilla-1744896.patch
|
||||
# xdg-activation backports from 97.0
|
||||
Patch421: D132929.diff
|
||||
Patch422: D133209.diff
|
||||
Patch423: D133485.diff
|
||||
Patch424: D133634.diff
|
||||
Patch425: D133885.diff
|
||||
Patch426: D134141.diff
|
||||
|
||||
# PGO/LTO patches
|
||||
Patch600: pgo.patch
|
||||
@ -464,7 +468,6 @@ This package contains results of tests executed during build.
|
||||
%patch57 -p1 -b .ffvpx-with-vapi
|
||||
#%patch61 -p1 -b .glibc-dynstack
|
||||
%patch62 -p1 -b .build-python
|
||||
%patch63 -p1 -b .1745560
|
||||
|
||||
# Test patches
|
||||
#%patch100 -p1 -b .firefox-tests-xpcshell
|
||||
@ -487,8 +490,14 @@ This package contains results of tests executed during build.
|
||||
%patch407 -p1 -b .1667096
|
||||
%patch408 -p1 -b .1663844
|
||||
%patch415 -p1 -b .1670333
|
||||
#%patch420 -p1 -b .mochitest-wayland-workaround
|
||||
%patch421 -p1 -b .1744896
|
||||
|
||||
# xdg-activation backports from 97.0
|
||||
%patch421 -p1 -b .D132929
|
||||
%patch422 -p1 -b .D133209
|
||||
%patch423 -p1 -b .D133485
|
||||
%patch424 -p1 -b .D133634
|
||||
%patch425 -p1 -b .D133885
|
||||
%patch426 -p1 -b .D134141
|
||||
|
||||
# PGO patches
|
||||
%if %{build_with_pgo}
|
||||
@ -1058,6 +1067,9 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
|
||||
#---------------------------------------------------------------------
|
||||
|
||||
%changelog
|
||||
* Tue Jan 11 2022 Martin Stransky <stransky@redhat.com> - 96.0-1
|
||||
- Updated to 96.0
|
||||
|
||||
* Sat Jan 08 2022 Miro Hrončok <mhroncok@redhat.com> - 95.0.2-5
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Changes/LIBFFI34
|
||||
|
||||
|
@ -1,61 +0,0 @@
|
||||
diff -up firefox-89.0/dom/base/test/browser_multiple_popups.js.mochitest-wayland-workaround firefox-89.0/dom/base/test/browser_multiple_popups.js
|
||||
--- firefox-89.0/dom/base/test/browser_multiple_popups.js.mochitest-wayland-workaround 2021-05-27 22:29:44.000000000 +0200
|
||||
+++ firefox-89.0/dom/base/test/browser_multiple_popups.js 2021-06-01 10:02:59.648432325 +0200
|
||||
@@ -265,6 +265,7 @@ add_task(async _ => {
|
||||
info("All opened from chrome.");
|
||||
await withTestPage(2, { chrome: true }, async function(browser) {
|
||||
await BrowserTestUtils.synthesizeMouseAtCenter("#openPopups", {}, browser);
|
||||
+ await BrowserTestUtils.synthesizeMouseAtCenter("#openPopups", {}, browser);
|
||||
});
|
||||
});
|
||||
|
||||
diff -up firefox-89.0/dom/ipc/BrowserChild.cpp.mochitest-wayland-workaround firefox-89.0/dom/ipc/BrowserChild.cpp
|
||||
--- firefox-89.0/dom/ipc/BrowserChild.cpp.mochitest-wayland-workaround 2021-05-27 22:29:44.000000000 +0200
|
||||
+++ firefox-89.0/dom/ipc/BrowserChild.cpp 2021-06-01 10:02:59.649432346 +0200
|
||||
@@ -457,7 +457,7 @@ nsresult BrowserChild::Init(mozIDOMWindo
|
||||
}
|
||||
mPuppetWidget->InfallibleCreate(nullptr,
|
||||
nullptr, // no parents
|
||||
- LayoutDeviceIntRect(0, 0, 0, 0),
|
||||
+ LayoutDeviceIntRect(0, 0, 1000, 1000),
|
||||
nullptr); // HandleWidgetEvent
|
||||
|
||||
mWebBrowser = nsWebBrowser::Create(this, mPuppetWidget, mBrowsingContext,
|
||||
diff -up firefox-89.0/toolkit/components/browser/nsWebBrowser.cpp.mochitest-wayland-workaround firefox-89.0/toolkit/components/browser/nsWebBrowser.cpp
|
||||
--- firefox-89.0/toolkit/components/browser/nsWebBrowser.cpp.mochitest-wayland-workaround 2021-05-27 22:29:54.000000000 +0200
|
||||
+++ firefox-89.0/toolkit/components/browser/nsWebBrowser.cpp 2021-06-01 10:02:59.649432346 +0200
|
||||
@@ -150,7 +150,8 @@ already_AddRefed<nsWebBrowser> nsWebBrow
|
||||
// handler that always gets called (even for subframes) for any bubbling
|
||||
// event.
|
||||
|
||||
- nsresult rv = docShell->InitWindow(nullptr, docShellParentWidget, 0, 0, 0, 0);
|
||||
+ nsresult rv =
|
||||
+ docShell->InitWindow(nullptr, docShellParentWidget, 0, 0, 1000, 1000);
|
||||
if (NS_WARN_IF(NS_FAILED(rv))) {
|
||||
return nullptr;
|
||||
}
|
||||
diff -up firefox-89.0/widget/gtk/nsWindow.cpp.mochitest-wayland-workaround firefox-89.0/widget/gtk/nsWindow.cpp
|
||||
--- firefox-89.0/widget/gtk/nsWindow.cpp.mochitest-wayland-workaround 2021-06-01 10:02:59.644432243 +0200
|
||||
+++ firefox-89.0/widget/gtk/nsWindow.cpp 2021-06-01 10:04:28.715262874 +0200
|
||||
@@ -7962,6 +7973,8 @@ nsresult nsWindow::SynthesizeNativeMouse
|
||||
nsIObserver* aObserver) {
|
||||
AutoObserverNotifier notifier(aObserver, "mouseevent");
|
||||
|
||||
+ LOG(("nsWindow::SynthesizeNativeMouseEvent [%p]\n", (void*)this));
|
||||
+
|
||||
if (!mGdkWindow) {
|
||||
return NS_OK;
|
||||
}
|
||||
@@ -7976,6 +7989,12 @@ nsresult nsWindow::SynthesizeNativeMouse
|
||||
switch (aNativeMessage) {
|
||||
case NativeMouseMessage::ButtonDown:
|
||||
case NativeMouseMessage::ButtonUp: {
|
||||
+ if (aNativeMessage == NativeMouseMessage::ButtonDown) {
|
||||
+ LOG((" NativeMouseMessage::ButtonDown()\n"));
|
||||
+ } else {
|
||||
+ LOG((" NativeMouseMessage::ButtonUp()\n"));
|
||||
+ }
|
||||
+
|
||||
GdkEvent event;
|
||||
memset(&event, 0, sizeof(GdkEvent));
|
||||
event.type = aNativeMessage == NativeMouseMessage::ButtonDown
|
@ -1,42 +0,0 @@
|
||||
diff -up firefox-95.0.2/widget/gtk/nsWindow.cpp.1744896 firefox-95.0.2/widget/gtk/nsWindow.cpp
|
||||
--- firefox-95.0.2/widget/gtk/nsWindow.cpp.1744896 2021-12-23 11:54:31.522539340 +0100
|
||||
+++ firefox-95.0.2/widget/gtk/nsWindow.cpp 2021-12-23 11:55:56.070270174 +0100
|
||||
@@ -5765,6 +5765,17 @@ nsresult nsWindow::Create(nsIWidget* aPa
|
||||
}
|
||||
}
|
||||
#endif
|
||||
+#ifdef MOZ_WAYLAND
|
||||
+ // Initialize the window specific VsyncSource early in order to avoid races
|
||||
+ // with BrowserParent::UpdateVsyncParentVsyncSource().
|
||||
+ // Only use for toplevel windows for now, see bug 1619246.
|
||||
+ if (GdkIsWaylandDisplay() &&
|
||||
+ StaticPrefs::widget_wayland_vsync_enabled_AtStartup() &&
|
||||
+ mWindowType == eWindowType_toplevel) {
|
||||
+ mWaylandVsyncSource = new WaylandVsyncSource();
|
||||
+ MOZ_RELEASE_ASSERT(mWaylandVsyncSource);
|
||||
+ }
|
||||
+#endif
|
||||
|
||||
// We create input contexts for all containers, except for
|
||||
// toplevel popup windows
|
||||
@@ -6077,19 +6088,12 @@ void nsWindow::ResumeCompositorFromCompo
|
||||
|
||||
void nsWindow::WaylandStartVsync() {
|
||||
#ifdef MOZ_WAYLAND
|
||||
- // only use for toplevel windows for now - see bug 1619246
|
||||
- if (!GdkIsWaylandDisplay() ||
|
||||
- !StaticPrefs::widget_wayland_vsync_enabled_AtStartup() ||
|
||||
- mWindowType != eWindowType_toplevel) {
|
||||
+ if (!mWaylandVsyncSource) {
|
||||
return;
|
||||
}
|
||||
|
||||
LOG("nsWindow::WaylandStartVsync() [%p]\n", (void*)this);
|
||||
|
||||
- if (!mWaylandVsyncSource) {
|
||||
- mWaylandVsyncSource = new WaylandVsyncSource();
|
||||
- }
|
||||
-
|
||||
WaylandVsyncSource::WaylandDisplay& display =
|
||||
static_cast<WaylandVsyncSource::WaylandDisplay&>(
|
||||
mWaylandVsyncSource->GetGlobalDisplay());
|
@ -1,15 +0,0 @@
|
||||
diff --git a/widget/gtk/mozwayland/mozwayland.c b/widget/gtk/mozwayland/mozwayland.c
|
||||
--- a/widget/gtk/mozwayland/mozwayland.c
|
||||
+++ b/widget/gtk/mozwayland/mozwayland.c
|
||||
@@ -200,3 +200,10 @@
|
||||
|
||||
MOZ_EXPORT void wl_list_insert_list(struct wl_list* list,
|
||||
struct wl_list* other) {}
|
||||
+
|
||||
+MOZ_EXPORT struct wl_proxy* wl_proxy_marshal_flags(
|
||||
+ struct wl_proxy* proxy, uint32_t opcode,
|
||||
+ const struct wl_interface* interface, uint32_t version, uint32_t flags,
|
||||
+ ...) {
|
||||
+ return NULL;
|
||||
+}
|
||||
|
38
pgo.patch
38
pgo.patch
@ -1,6 +1,6 @@
|
||||
diff -up firefox-95.0/build/moz.configure/lto-pgo.configure.pgo firefox-95.0/build/moz.configure/lto-pgo.configure
|
||||
--- firefox-95.0/build/moz.configure/lto-pgo.configure.pgo 2021-12-03 16:04:48.441167077 +0100
|
||||
+++ firefox-95.0/build/moz.configure/lto-pgo.configure 2021-12-03 16:06:19.129415806 +0100
|
||||
diff -up firefox-96.0/build/moz.configure/lto-pgo.configure.pgo firefox-96.0/build/moz.configure/lto-pgo.configure
|
||||
--- firefox-96.0/build/moz.configure/lto-pgo.configure.pgo 2022-01-06 19:32:35.000000000 +0100
|
||||
+++ firefox-96.0/build/moz.configure/lto-pgo.configure 2022-01-11 15:43:02.193378698 +0100
|
||||
@@ -248,8 +248,8 @@ def lto(
|
||||
cflags.append("-flto")
|
||||
ldflags.append("-flto")
|
||||
@ -21,9 +21,9 @@ diff -up firefox-95.0/build/moz.configure/lto-pgo.configure.pgo firefox-95.0/bui
|
||||
# With clang-cl, -flto can only be used with -c or -fuse-ld=lld.
|
||||
# AC_TRY_LINKs during configure don't have -c, so pass -fuse-ld=lld.
|
||||
cflags.append("-fuse-ld=lld")
|
||||
diff -up firefox-95.0/build/pgo/profileserver.py.pgo firefox-95.0/build/pgo/profileserver.py
|
||||
--- firefox-95.0/build/pgo/profileserver.py.pgo 2021-11-29 15:01:10.000000000 +0100
|
||||
+++ firefox-95.0/build/pgo/profileserver.py 2021-12-03 16:04:48.441167077 +0100
|
||||
diff -up firefox-96.0/build/pgo/profileserver.py.pgo firefox-96.0/build/pgo/profileserver.py
|
||||
--- firefox-96.0/build/pgo/profileserver.py.pgo 2022-01-06 16:56:23.000000000 +0100
|
||||
+++ firefox-96.0/build/pgo/profileserver.py 2022-01-11 15:43:02.193378698 +0100
|
||||
@@ -11,7 +11,7 @@ import glob
|
||||
import subprocess
|
||||
|
||||
@ -70,9 +70,9 @@ diff -up firefox-95.0/build/pgo/profileserver.py.pgo firefox-95.0/build/pgo/prof
|
||||
llvm_profdata = env.get("LLVM_PROFDATA")
|
||||
if llvm_profdata:
|
||||
profraw_files = glob.glob("*.profraw")
|
||||
diff -up firefox-95.0/build/unix/mozconfig.unix.pgo firefox-95.0/build/unix/mozconfig.unix
|
||||
--- firefox-95.0/build/unix/mozconfig.unix.pgo 2021-11-29 15:01:10.000000000 +0100
|
||||
+++ firefox-95.0/build/unix/mozconfig.unix 2021-12-03 16:04:48.441167077 +0100
|
||||
diff -up firefox-96.0/build/unix/mozconfig.unix.pgo firefox-96.0/build/unix/mozconfig.unix
|
||||
--- firefox-96.0/build/unix/mozconfig.unix.pgo 2022-01-06 16:56:24.000000000 +0100
|
||||
+++ firefox-96.0/build/unix/mozconfig.unix 2022-01-11 15:43:02.193378698 +0100
|
||||
@@ -4,6 +4,15 @@ if [ -n "$FORCE_GCC" ]; then
|
||||
CC="$MOZ_FETCHES_DIR/gcc/bin/gcc"
|
||||
CXX="$MOZ_FETCHES_DIR/gcc/bin/g++"
|
||||
@ -89,18 +89,18 @@ diff -up firefox-95.0/build/unix/mozconfig.unix.pgo firefox-95.0/build/unix/mozc
|
||||
# We want to make sure we use binutils and other binaries in the tooltool
|
||||
# package.
|
||||
mk_add_options "export PATH=$MOZ_FETCHES_DIR/gcc/bin:$PATH"
|
||||
diff -up firefox-95.0/extensions/spellcheck/src/moz.build.pgo firefox-95.0/extensions/spellcheck/src/moz.build
|
||||
--- firefox-95.0/extensions/spellcheck/src/moz.build.pgo 2021-11-29 15:01:12.000000000 +0100
|
||||
+++ firefox-95.0/extensions/spellcheck/src/moz.build 2021-12-03 16:04:48.441167077 +0100
|
||||
@@ -31,3 +31,5 @@ EXPORTS.mozilla += [
|
||||
|
||||
if CONFIG["CC_TYPE"] in ("clang", "gcc"):
|
||||
CXXFLAGS += ["-Wno-error=shadow"]
|
||||
diff -up firefox-96.0/extensions/spellcheck/src/moz.build.pgo firefox-96.0/extensions/spellcheck/src/moz.build
|
||||
--- firefox-96.0/extensions/spellcheck/src/moz.build.pgo 2022-01-11 15:43:02.193378698 +0100
|
||||
+++ firefox-96.0/extensions/spellcheck/src/moz.build 2022-01-11 15:49:52.929362701 +0100
|
||||
@@ -28,3 +28,5 @@ EXPORTS.mozilla += [
|
||||
"mozInlineSpellChecker.h",
|
||||
"mozSpellChecker.h",
|
||||
]
|
||||
+
|
||||
+CXXFLAGS += ['-fno-devirtualize']
|
||||
diff -up firefox-95.0/toolkit/components/terminator/nsTerminator.cpp.pgo firefox-95.0/toolkit/components/terminator/nsTerminator.cpp
|
||||
--- firefox-95.0/toolkit/components/terminator/nsTerminator.cpp.pgo 2021-11-29 15:01:30.000000000 +0100
|
||||
+++ firefox-95.0/toolkit/components/terminator/nsTerminator.cpp 2021-12-03 16:04:48.442167068 +0100
|
||||
diff -up firefox-96.0/toolkit/components/terminator/nsTerminator.cpp.pgo firefox-96.0/toolkit/components/terminator/nsTerminator.cpp
|
||||
--- firefox-96.0/toolkit/components/terminator/nsTerminator.cpp.pgo 2022-01-06 16:58:15.000000000 +0100
|
||||
+++ firefox-96.0/toolkit/components/terminator/nsTerminator.cpp 2022-01-11 15:43:02.193378698 +0100
|
||||
@@ -466,6 +466,11 @@ void nsTerminator::StartWatchdog() {
|
||||
}
|
||||
#endif
|
||||
|
4
sources
4
sources
@ -1,4 +1,4 @@
|
||||
SHA512 (cbindgen-vendor.tar.xz) = b9ab1498be90ecf60822df7021f8812f124550d97f8cd687c69d3ab56fc5fb714bfe88c78c978a1794d211724909a9a5cad6a4b483fa05f762909c45d5075520
|
||||
SHA512 (mochitest-python.tar.gz) = 18e1aeb475df5fbf1fe3838897d5ac2f3114aa349030713fc2be27af087b1b12f57642621b87bd052f324a7cb7fbae5f36b21502191d85692f62c8cdd69c8bf2
|
||||
SHA512 (firefox-95.0.2.source.tar.xz) = 1b9eb91d72a6975b4d2558a7c5de0e008095398b9862498623656ab6d8056e3cffc12263f58aa07feeddc91ccfb512aa4b582dfeadb142d548d96c3d50204196
|
||||
SHA512 (firefox-langpacks-95.0.2-20211220.tar.xz) = 28adb48311b7e3ab8acfd54dfa68a2f58344d7e73353ef71f8f02d608a23471e62c318accd4c0157478edd300c449af758ca93be0f8891160ba26f8888afdd9d
|
||||
SHA512 (firefox-96.0.source.tar.xz) = 39f553474537eb4e521f4182e38f0ddff039fa6b40b939d461937d2cef27f7182097b478f08f90d64fdcbe9c063e78f14f6863a8a82a16207ec7a1d3fdfda4ff
|
||||
SHA512 (firefox-langpacks-96.0-20220111.tar.xz) = 116e80badb7ba9077138371789fe017350f5ab0473a6130a356d05fb7205eedefc77076d56ee9f4feb7db3cf84456b8b182936185ef77723115ea9559f044f33
|
||||
|
Loading…
Reference in New Issue
Block a user