-m
This commit is contained in:
parent
be5c6d4f08
commit
16e6b6b266
2
.gitignore
vendored
2
.gitignore
vendored
@ -491,3 +491,5 @@ firefox-3.6.4.source.tar.bz2
|
|||||||
/firefox-96.0.1.source.tar.xz
|
/firefox-96.0.1.source.tar.xz
|
||||||
/firefox-96.0.3.source.tar.xz
|
/firefox-96.0.3.source.tar.xz
|
||||||
/firefox-langpacks-96.0.3-20220131.tar.xz
|
/firefox-langpacks-96.0.3-20220131.tar.xz
|
||||||
|
/firefox-97.0.source.tar.xz
|
||||||
|
/firefox-langpacks-97.0-20220208.tar.xz
|
||||||
|
18
D132929.diff
18
D132929.diff
@ -1,18 +0,0 @@
|
|||||||
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
197
D133209.diff
@ -1,197 +0,0 @@
|
|||||||
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
31
D133485.diff
@ -1,31 +0,0 @@
|
|||||||
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
119
D133634.diff
@ -1,119 +0,0 @@
|
|||||||
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
33
D133885.diff
@ -1,33 +0,0 @@
|
|||||||
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
12
D134141.diff
@ -1,12 +0,0 @@
|
|||||||
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();
|
|
||||||
|
|
@ -1,21 +0,0 @@
|
|||||||
diff -up firefox-72.0.2/js/src/wasm/WasmSignalHandlers.cpp.old firefox-72.0.2/js/src/wasm/WasmSignalHandlers.cpp
|
|
||||||
--- firefox-72.0.2/js/src/wasm/WasmSignalHandlers.cpp.old 2020-01-17 23:34:41.000000000 +0200
|
|
||||||
+++ firefox-72.0.2/js/src/wasm/WasmSignalHandlers.cpp 2020-02-02 08:07:54.670341986 +0200
|
|
||||||
@@ -249,7 +249,16 @@ using mozilla::DebugOnly;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef WASM_EMULATE_ARM_UNALIGNED_FP_ACCESS
|
|
||||||
-# include <sys/user.h>
|
|
||||||
+struct user_vfp {
|
|
||||||
+ unsigned long long fpregs[32];
|
|
||||||
+ unsigned long fpscr;
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+struct user_vfp_exc {
|
|
||||||
+ unsigned long fpexc;
|
|
||||||
+ unsigned long fpinst;
|
|
||||||
+ unsigned long fpinst2;
|
|
||||||
+};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(ANDROID)
|
|
@ -1,7 +1,7 @@
|
|||||||
diff -up firefox-84.0/toolkit/moz.configure.disable-elfhack firefox-84.0/toolkit/moz.configure
|
diff -up firefox-97.0/toolkit/moz.configure.disable-elfhack firefox-97.0/toolkit/moz.configure
|
||||||
--- firefox-84.0/toolkit/moz.configure.disable-elfhack 2020-12-10 12:37:30.727243266 +0100
|
--- firefox-97.0/toolkit/moz.configure.disable-elfhack 2022-02-08 09:58:47.518047952 +0100
|
||||||
+++ firefox-84.0/toolkit/moz.configure 2020-12-10 12:39:42.771967894 +0100
|
+++ firefox-97.0/toolkit/moz.configure 2022-02-08 10:17:49.552945956 +0100
|
||||||
@@ -1280,7 +1280,7 @@ with only_when("--enable-compile-environ
|
@@ -1273,7 +1273,7 @@ with only_when("--enable-compile-environ
|
||||||
help="{Enable|Disable} elf hacks",
|
help="{Enable|Disable} elf hacks",
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -9,4 +9,4 @@ diff -up firefox-84.0/toolkit/moz.configure.disable-elfhack firefox-84.0/toolkit
|
|||||||
+ set_config("USE_ELF_HACK", depends_if("--enable-elf-hack")(lambda _: False))
|
+ set_config("USE_ELF_HACK", depends_if("--enable-elf-hack")(lambda _: False))
|
||||||
|
|
||||||
|
|
||||||
@depends(check_build_environment)
|
@depends(build_environment)
|
||||||
|
File diff suppressed because one or more lines are too long
31
firefox.spec
31
firefox.spec
@ -126,7 +126,7 @@ ExcludeArch: aarch64
|
|||||||
%if %{?system_nss}
|
%if %{?system_nss}
|
||||||
%global nspr_version 4.26
|
%global nspr_version 4.26
|
||||||
%global nspr_build_version %{nspr_version}
|
%global nspr_build_version %{nspr_version}
|
||||||
%global nss_version 3.73
|
%global nss_version 3.74
|
||||||
%global nss_build_version %{nss_version}
|
%global nss_build_version %{nss_version}
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
@ -162,13 +162,13 @@ ExcludeArch: aarch64
|
|||||||
|
|
||||||
Summary: Mozilla Firefox Web browser
|
Summary: Mozilla Firefox Web browser
|
||||||
Name: firefox
|
Name: firefox
|
||||||
Version: 96.0.3
|
Version: 97.0
|
||||||
Release: 1%{?pre_tag}%{?dist}
|
Release: 1%{?pre_tag}%{?dist}
|
||||||
URL: https://www.mozilla.org/firefox/
|
URL: https://www.mozilla.org/firefox/
|
||||||
License: MPLv1.1 or GPLv2+ or LGPLv2+
|
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
|
Source0: https://archive.mozilla.org/pub/firefox/releases/%{version}%{?pre_version}/source/firefox-%{version}%{?pre_version}.source.tar.xz
|
||||||
%if %{with langpacks}
|
%if %{with langpacks}
|
||||||
Source1: firefox-langpacks-%{version}%{?pre_version}-20220131.tar.xz
|
Source1: firefox-langpacks-%{version}%{?pre_version}-20220208.tar.xz
|
||||||
%endif
|
%endif
|
||||||
Source2: cbindgen-vendor.tar.xz
|
Source2: cbindgen-vendor.tar.xz
|
||||||
Source10: firefox-mozconfig
|
Source10: firefox-mozconfig
|
||||||
@ -210,16 +210,14 @@ Patch41: build-disable-elfhack.patch
|
|||||||
Patch44: build-arm-libopus.patch
|
Patch44: build-arm-libopus.patch
|
||||||
Patch46: firefox-nss-version.patch
|
Patch46: firefox-nss-version.patch
|
||||||
Patch47: fedora-shebang-build.patch
|
Patch47: fedora-shebang-build.patch
|
||||||
#Patch48: build-arm-wasm.patch
|
|
||||||
Patch49: build-arm-libaom.patch
|
Patch49: build-arm-libaom.patch
|
||||||
Patch53: firefox-gcc-build.patch
|
Patch53: firefox-gcc-build.patch
|
||||||
# This should be fixed in Firefox 83
|
|
||||||
Patch54: mozilla-1669639.patch
|
Patch54: mozilla-1669639.patch
|
||||||
Patch55: firefox-testing.patch
|
Patch55: firefox-testing.patch
|
||||||
Patch57: firefox-disable-ffvpx-with-vapi.patch
|
Patch57: firefox-disable-ffvpx-with-vapi.patch
|
||||||
Patch61: firefox-glibc-dynstack.patch
|
Patch61: firefox-glibc-dynstack.patch
|
||||||
Patch62: build-python.patch
|
Patch62: build-python.patch
|
||||||
Patch63: build-python-glean.patch
|
Patch64: mozilla-1753402.patch
|
||||||
|
|
||||||
# Test patches
|
# Test patches
|
||||||
# Generate without context by
|
# Generate without context by
|
||||||
@ -244,13 +242,6 @@ Patch402: mozilla-1196777.patch
|
|||||||
Patch407: mozilla-1667096.patch
|
Patch407: mozilla-1667096.patch
|
||||||
Patch408: mozilla-1663844.patch
|
Patch408: mozilla-1663844.patch
|
||||||
Patch415: mozilla-1670333.patch
|
Patch415: mozilla-1670333.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
|
# PGO/LTO patches
|
||||||
Patch600: pgo.patch
|
Patch600: pgo.patch
|
||||||
@ -465,8 +456,7 @@ This package contains results of tests executed during build.
|
|||||||
%patch54 -p1 -b .1669639
|
%patch54 -p1 -b .1669639
|
||||||
%patch55 -p1 -b .testing
|
%patch55 -p1 -b .testing
|
||||||
%patch57 -p1 -b .ffvpx-with-vapi
|
%patch57 -p1 -b .ffvpx-with-vapi
|
||||||
%patch63 -p1 -b .build-python-glean.patch
|
%patch64 -p1 -b .1753402
|
||||||
#%patch62 -p1 -b .build-python
|
|
||||||
|
|
||||||
# Test patches
|
# Test patches
|
||||||
%patch100 -p1 -b .firefox-tests-xpcshell
|
%patch100 -p1 -b .firefox-tests-xpcshell
|
||||||
@ -490,14 +480,6 @@ This package contains results of tests executed during build.
|
|||||||
%patch408 -p1 -b .1663844
|
%patch408 -p1 -b .1663844
|
||||||
%patch415 -p1 -b .1670333
|
%patch415 -p1 -b .1670333
|
||||||
|
|
||||||
# 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
|
# PGO patches
|
||||||
%if %{build_with_pgo}
|
%if %{build_with_pgo}
|
||||||
%if !%{build_with_clang}
|
%if !%{build_with_clang}
|
||||||
@ -1061,6 +1043,9 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
|
|||||||
#---------------------------------------------------------------------
|
#---------------------------------------------------------------------
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue Feb 8 2022 Martin Stransky <stransky@redhat.com> - 97.0-1
|
||||||
|
- Updated to 97.0
|
||||||
|
|
||||||
* Mon Jan 31 2022 Martin Stransky <stransky@redhat.com> - 96.0.3-1
|
* Mon Jan 31 2022 Martin Stransky <stransky@redhat.com> - 96.0.3-1
|
||||||
- Updated to 96.0.3
|
- Updated to 96.0.3
|
||||||
|
|
||||||
|
@ -1,18 +1,19 @@
|
|||||||
diff -up firefox-94.0/media/ffvpx/libavcodec/codec_list.c.1667096 firefox-94.0/media/ffvpx/libavcodec/codec_list.c
|
diff -up firefox-97.0/media/ffvpx/libavcodec/codec_list.c.1667096 firefox-97.0/media/ffvpx/libavcodec/codec_list.c
|
||||||
--- firefox-94.0/media/ffvpx/libavcodec/codec_list.c.1667096 2021-10-28 20:03:38.000000000 +0200
|
--- firefox-97.0/media/ffvpx/libavcodec/codec_list.c.1667096 2022-02-08 10:21:17.151809054 +0100
|
||||||
+++ firefox-94.0/media/ffvpx/libavcodec/codec_list.c 2021-11-01 11:02:50.898723802 +0100
|
+++ firefox-97.0/media/ffvpx/libavcodec/codec_list.c 2022-02-08 10:25:11.374078784 +0100
|
||||||
@@ -11,4 +11,8 @@ static const AVCodec * const codec_list[
|
@@ -11,6 +11,9 @@ static const AVCodec * const codec_list[
|
||||||
#if CONFIG_MP3_DECODER
|
#if CONFIG_MP3_DECODER
|
||||||
&ff_mp3_decoder,
|
&ff_mp3_decoder,
|
||||||
#endif
|
#endif
|
||||||
+#ifdef CONFIG_LIBFDK_AAC
|
+#ifdef CONFIG_LIBFDK_AAC
|
||||||
+ &ff_libfdk_aac_decoder,
|
+ &ff_libfdk_aac_decoder,
|
||||||
+#endif
|
+#endif
|
||||||
+
|
#if CONFIG_AV1_DECODER
|
||||||
NULL };
|
&ff_av1_decoder,
|
||||||
diff -up firefox-94.0/media/ffvpx/libavcodec/libfdk-aacdec.c.1667096 firefox-94.0/media/ffvpx/libavcodec/libfdk-aacdec.c
|
#endif
|
||||||
--- firefox-94.0/media/ffvpx/libavcodec/libfdk-aacdec.c.1667096 2021-11-01 11:02:50.899723835 +0100
|
diff -up firefox-97.0/media/ffvpx/libavcodec/libfdk-aacdec.c.1667096 firefox-97.0/media/ffvpx/libavcodec/libfdk-aacdec.c
|
||||||
+++ firefox-94.0/media/ffvpx/libavcodec/libfdk-aacdec.c 2021-11-01 11:02:50.899723835 +0100
|
--- firefox-97.0/media/ffvpx/libavcodec/libfdk-aacdec.c.1667096 2022-02-08 10:21:17.151809054 +0100
|
||||||
|
+++ firefox-97.0/media/ffvpx/libavcodec/libfdk-aacdec.c 2022-02-08 10:21:17.151809054 +0100
|
||||||
@@ -0,0 +1,409 @@
|
@@ -0,0 +1,409 @@
|
||||||
+/*
|
+/*
|
||||||
+ * AAC decoder wrapper
|
+ * AAC decoder wrapper
|
||||||
@ -423,10 +424,10 @@ diff -up firefox-94.0/media/ffvpx/libavcodec/libfdk-aacdec.c.1667096 firefox-94.
|
|||||||
+ FF_CODEC_CAP_INIT_CLEANUP,
|
+ FF_CODEC_CAP_INIT_CLEANUP,
|
||||||
+ .wrapper_name = "libfdk",
|
+ .wrapper_name = "libfdk",
|
||||||
+};
|
+};
|
||||||
diff -up firefox-94.0/media/ffvpx/libavcodec/moz.build.1667096 firefox-94.0/media/ffvpx/libavcodec/moz.build
|
diff -up firefox-97.0/media/ffvpx/libavcodec/moz.build.1667096 firefox-97.0/media/ffvpx/libavcodec/moz.build
|
||||||
--- firefox-94.0/media/ffvpx/libavcodec/moz.build.1667096 2021-10-28 20:03:43.000000000 +0200
|
--- firefox-97.0/media/ffvpx/libavcodec/moz.build.1667096 2022-02-02 22:01:47.000000000 +0100
|
||||||
+++ firefox-94.0/media/ffvpx/libavcodec/moz.build 2021-11-01 11:02:50.899723835 +0100
|
+++ firefox-97.0/media/ffvpx/libavcodec/moz.build 2022-02-08 10:21:17.151809054 +0100
|
||||||
@@ -104,6 +104,12 @@ if not CONFIG['MOZ_FFVPX_AUDIOONLY']:
|
@@ -111,6 +111,12 @@ if not CONFIG['MOZ_FFVPX_AUDIOONLY']:
|
||||||
]
|
]
|
||||||
USE_LIBS += ['mozva']
|
USE_LIBS += ['mozva']
|
||||||
|
|
||||||
@ -439,14 +440,15 @@ diff -up firefox-94.0/media/ffvpx/libavcodec/moz.build.1667096 firefox-94.0/medi
|
|||||||
if CONFIG['MOZ_LIBAV_FFT']:
|
if CONFIG['MOZ_LIBAV_FFT']:
|
||||||
SOURCES += [
|
SOURCES += [
|
||||||
'avfft.c',
|
'avfft.c',
|
||||||
diff -up firefox-94.0/toolkit/moz.configure.1667096 firefox-94.0/toolkit/moz.configure
|
diff -up firefox-97.0/toolkit/moz.configure.1667096 firefox-97.0/toolkit/moz.configure
|
||||||
--- firefox-94.0/toolkit/moz.configure.1667096 2021-11-01 11:02:50.899723835 +0100
|
--- firefox-97.0/toolkit/moz.configure.1667096 2022-02-08 10:21:17.152809035 +0100
|
||||||
+++ firefox-94.0/toolkit/moz.configure 2021-11-01 11:04:28.545873853 +0100
|
+++ firefox-97.0/toolkit/moz.configure 2022-02-08 10:24:31.734885827 +0100
|
||||||
@@ -1878,6 +1878,14 @@ with only_when(compile_environment):
|
@@ -1969,6 +1969,15 @@ with only_when(compile_environment):
|
||||||
& jpeg_arm_neon_vld1q_u8_x4,
|
|
||||||
)
|
|
||||||
|
|
||||||
+# fdk aac support
|
set_config("MOZ_SYSTEM_PNG", True, when="--with-system-png")
|
||||||
|
|
||||||
|
+# FDK AAC support
|
||||||
|
+# ==============================================================
|
||||||
+option('--with-system-fdk-aac',
|
+option('--with-system-fdk-aac',
|
||||||
+ help='Use system libfdk-aac (located with pkgconfig)')
|
+ help='Use system libfdk-aac (located with pkgconfig)')
|
||||||
+
|
+
|
||||||
|
12
mozilla-1753402.patch
Normal file
12
mozilla-1753402.patch
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
diff --git a/tools/profiler/rust-api/build.rs b/tools/profiler/rust-api/build.rs
|
||||||
|
--- a/tools/profiler/rust-api/build.rs
|
||||||
|
+++ b/tools/profiler/rust-api/build.rs
|
||||||
|
@@ -61,6 +61,7 @@
|
||||||
|
let mut builder = Builder::default()
|
||||||
|
.enable_cxx_namespaces()
|
||||||
|
.with_codegen_config(CodegenConfig::TYPES | CodegenConfig::VARS | CodegenConfig::FUNCTIONS)
|
||||||
|
+ .disable_untagged_union()
|
||||||
|
.size_t_is_usize(true);
|
||||||
|
|
||||||
|
for dir in SEARCH_PATHS.iter() {
|
||||||
|
|
4
sources
4
sources
@ -1,4 +1,4 @@
|
|||||||
SHA512 (cbindgen-vendor.tar.xz) = b9ab1498be90ecf60822df7021f8812f124550d97f8cd687c69d3ab56fc5fb714bfe88c78c978a1794d211724909a9a5cad6a4b483fa05f762909c45d5075520
|
SHA512 (cbindgen-vendor.tar.xz) = b9ab1498be90ecf60822df7021f8812f124550d97f8cd687c69d3ab56fc5fb714bfe88c78c978a1794d211724909a9a5cad6a4b483fa05f762909c45d5075520
|
||||||
SHA512 (mochitest-python.tar.gz) = 18e1aeb475df5fbf1fe3838897d5ac2f3114aa349030713fc2be27af087b1b12f57642621b87bd052f324a7cb7fbae5f36b21502191d85692f62c8cdd69c8bf2
|
SHA512 (mochitest-python.tar.gz) = 18e1aeb475df5fbf1fe3838897d5ac2f3114aa349030713fc2be27af087b1b12f57642621b87bd052f324a7cb7fbae5f36b21502191d85692f62c8cdd69c8bf2
|
||||||
SHA512 (firefox-96.0.3.source.tar.xz) = 3dd5fbc96e369d5f4fb3eca778c2bd3e2313d089f867de9fac3556810a797e9b5629ef1b8840fb2f22a18df7de95ea1993eee052f691d861a555cea544b05966
|
SHA512 (firefox-97.0.source.tar.xz) = a913695a42cb06ee9bda2a20e65cc573e40ca93e9f75b7ee0a43ebd1935b371e7e80d5fc8d5f126ad0712ab848635a8624bbeed43807e5c179537aa32c884186
|
||||||
SHA512 (firefox-langpacks-96.0.3-20220131.tar.xz) = 2c44690ed3ba6a0ba0ccb621598f8d6c619308b9a24cc6b39317603450e33b356b73d5c6ec41a34765c749067f7cd3c842ff0688b9d921377284671dc008de8a
|
SHA512 (firefox-langpacks-97.0-20220208.tar.xz) = 40c15f6c30566268fbc9c148d70f48bbf9f029b5d13c263e8e97917c96823d6bda552b1fd18e3f778117187c7fe44da0343dfd228bf66648a259e13cb1f94f28
|
||||||
|
Loading…
Reference in New Issue
Block a user