From 422073de22187f5dcf4324fd22334e686d6104ba Mon Sep 17 00:00:00 2001 From: Jan Horak Date: Tue, 11 Feb 2020 10:45:39 +0100 Subject: Added popup-fixing patches, fixed api key paths --- mozilla-1609732-pause-renderer.patch | 73 ++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 mozilla-1609732-pause-renderer.patch (limited to 'mozilla-1609732-pause-renderer.patch') diff --git a/mozilla-1609732-pause-renderer.patch b/mozilla-1609732-pause-renderer.patch new file mode 100644 index 0000000..6f159e1 --- /dev/null +++ b/mozilla-1609732-pause-renderer.patch @@ -0,0 +1,73 @@ +diff --git a/widget/gtk/nsWindow.h b/widget/gtk/nsWindow.h +--- a/widget/gtk/nsWindow.h ++++ b/widget/gtk/nsWindow.h +@@ -681,6 +681,7 @@ + + bool IsMainMenuWindow(); + GtkWidget* ConfigureWaylandPopupWindows(); ++ void PauseRemoteRenderer(); + void HideWaylandWindow(); + void HideWaylandTooltips(); + void HideWaylandPopupAndAllChildren(); +diff --git a/widget/gtk/nsWindow.cpp b/widget/gtk/nsWindow.cpp +--- a/widget/gtk/nsWindow.cpp ++++ b/widget/gtk/nsWindow.cpp +@@ -1386,10 +1386,10 @@ + } + + if (needsPositionUpdate && needsSizeUpdate) { +- Resize(newBounds.x, newBounds.y, newBounds.width, newBounds.height, true); ++ mBounds = newBounds; + NotifyWindowMoved(newBounds.x, newBounds.y); + } else if (needsPositionUpdate) { +- Move(newBounds.x, newBounds.y); ++ mBounds = newBounds; + NotifyWindowMoved(newBounds.x, newBounds.y); + } else { + Resize(newBounds.width, newBounds.height, true); +@@ -1476,6 +1476,7 @@ + bool isWidgetVisible = + (sGtkWidgetIsVisible != nullptr) && sGtkWidgetIsVisible(mShell); + if (isWidgetVisible) { ++ PauseRemoteRenderer(); + gtk_widget_hide(mShell); + } + +@@ -4497,16 +4498,8 @@ + } + } + +-void nsWindow::HideWaylandWindow() { ++void nsWindow::PauseRemoteRenderer() { + #ifdef MOZ_WAYLAND +- if (mWindowType == eWindowType_popup) { +- LOG(("nsWindow::HideWaylandWindow: popup [%p]\n", this)); +- GList* foundWindow = g_list_find(gVisibleWaylandPopupWindows, this); +- if (foundWindow) { +- gVisibleWaylandPopupWindows = +- g_list_delete_link(gVisibleWaylandPopupWindows, foundWindow); +- } +- } + if (!mIsDestroyed) { + if (mContainer && moz_container_has_wl_egl_window(mContainer)) { + // Because wl_egl_window is destroyed on moz_container_unmap(), +@@ -4529,6 +4522,18 @@ + } + } + #endif ++} ++ ++void nsWindow::HideWaylandWindow() { ++ if (mWindowType == eWindowType_popup) { ++ LOG(("nsWindow::HideWaylandWindow: popup [%p]\n", this)); ++ GList* foundWindow = g_list_find(gVisibleWaylandPopupWindows, this); ++ if (foundWindow) { ++ gVisibleWaylandPopupWindows = ++ g_list_delete_link(gVisibleWaylandPopupWindows, foundWindow); ++ } ++ } ++ PauseRemoteRenderer(); + gtk_widget_hide(mShell); + } + + -- cgit