Update to Firefox 96

This commit is contained in:
Martin Stransky 2022-01-11 19:47:58 +01:00
parent 951280922d
commit 9956bb1eaf
13 changed files with 454 additions and 148 deletions

2
.gitignore vendored
View File

@ -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
View 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
View 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
View 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
View 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
View 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
View 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();

View File

@ -162,13 +162,13 @@ ExcludeArch: aarch64
Summary: Mozilla Firefox Web browser
Name: firefox
Version: 95.0.2
Release: 4%{?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
* Thu Dec 23 2021 Martin Stransky <stransky@redhat.com> - 95.0.2-4
- Added fix fox mozbz#1744896 (VSync)

View File

@ -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

View File

@ -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());

View File

@ -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;
+}

View File

@ -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

View File

@ -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