34 lines
1.1 KiB
Diff
34 lines
1.1 KiB
Diff
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);
|
|
|