summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore2
-rw-r--r--firefox.spec35
-rw-r--r--mozilla-1605795-popup-parent-fix.patch231
-rw-r--r--mozilla-1607404-fix-remote-offset.patch109
-rw-r--r--mozilla-1609732-no-full-hide.patch60
-rw-r--r--mozilla-1609732-pause-renderer.patch73
-rw-r--r--sources4
7 files changed, 16 insertions, 498 deletions
diff --git a/.gitignore b/.gitignore
index 83f0129..fa4ed24 100644
--- a/.gitignore
+++ b/.gitignore
@@ -385,3 +385,5 @@ firefox-3.6.4.source.tar.bz2
/firefox-langpacks-73.0-20200211.tar.xz
/firefox-73.0.1.source.tar.xz
/firefox-langpacks-73.0.1-20200220.tar.xz
+/firefox-74.0.source.tar.xz
+/firefox-langpacks-74.0-20200303.tar.xz
diff --git a/firefox.spec b/firefox.spec
index be209f6..26f50fc 100644
--- a/firefox.spec
+++ b/firefox.spec
@@ -22,7 +22,11 @@ ExcludeArch: s390x
%global enable_mozilla_crashreporter 0
%endif
+%if 0%{?fedora} > 31
+%global system_nss 0
+%else
%global system_nss 1
+%endif
%global system_ffi 1
%ifarch armv7hl
%global system_libvpx 1
@@ -112,13 +116,13 @@ ExcludeArch: s390x
Summary: Mozilla Firefox Web browser
Name: firefox
-Version: 73.0.1
-Release: 4%{?dist}
+Version: 74.0
+Release: 1%{?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}-20200220.tar.xz
+Source1: firefox-langpacks-%{version}%{?pre_version}-20200303.tar.xz
%endif
Source2: cbindgen-vendor.tar.xz
Source10: firefox-mozconfig
@@ -157,7 +161,7 @@ Patch46: firefox-nss-version.patch
Patch47: fedora-shebang-build.patch
Patch48: build-arm-wasm.patch
Patch49: build-arm-libaom.patch
-Patch50: Bug-1610814-Fix-NEON-compile-error-with-gcc-and-RGB-.patch
+#Patch50: Bug-1610814-Fix-NEON-compile-error-with-gcc-and-RGB-.patch
# Fedora specific patches
Patch215: firefox-enable-addons.patch
@@ -177,10 +181,6 @@ Patch412: mozilla-1337988.patch
Patch415: Bug-1238661---fix-mozillaSignalTrampoline-to-work-.patch
Patch417: bug1375074-save-restore-x28.patch
Patch422: mozilla-1580174-webrtc-popup.patch
-Patch427: mozilla-1607404-fix-remote-offset.patch
-Patch428: mozilla-1609732-no-full-hide.patch
-Patch429: mozilla-1609732-pause-renderer.patch
-Patch430: mozilla-1605795-popup-parent-fix.patch
# Wayland specific upstream patches
Patch574: firefox-pipewire.patch
@@ -229,13 +229,7 @@ BuildRequires: clang-libs
%if 0%{?build_with_clang}
BuildRequires: lld
%endif
-
-%if 0%{?fedora} < 32
BuildRequires: pipewire-devel
-%else
-BuildRequires: pipewire02-devel
-%endif
-
%if !0%{?use_bundled_cbindgen}
BuildRequires: cbindgen
%endif
@@ -363,7 +357,7 @@ This package contains results of tests executed during build.
%patch47 -p1 -b .fedora-shebang
%patch48 -p1 -b .build-arm-wasm
%patch49 -p1 -b .build-arm-libaom
-%patch50 -p1 -b .build-arm-SwizzleNEON
+#%patch50 -p1 -b .build-arm-SwizzleNEON
# Fedora patches
%patch215 -p1 -b .addons
@@ -386,14 +380,6 @@ This package contains results of tests executed during build.
%patch415 -p1 -b .1238661
%endif
-# overflow widgets broken
-# dropdown missing on multimonitor
-# fix for wrong intl.accept_lang when using non en-us langpack
-%patch427 -p1 -b .1607404-fix-remote-offset
-%patch428 -p1 -b .1609732-no-full-hide
-%patch429 -p1 -b .1609732-pause-renderer
-%patch430 -p1 -b .1605795-popup-parent-fix
-
# Wayland specific upstream patches
%patch574 -p1 -b .firefox-pipewire
@@ -972,6 +958,9 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
#---------------------------------------------------------------------
%changelog
+* Tue Mar 03 2020 Martin Stransky <stransky@redhat.com> - 74.0-1
+- Update to 74.0 Build 1
+
* Mon Feb 24 2020 Martin Stransky <stransky@redhat.com> - 73.0.1-4
- Using pipewire-0.2 as buildrequire
- Added armv7hl fixes by Gabriel Hojda
diff --git a/mozilla-1605795-popup-parent-fix.patch b/mozilla-1605795-popup-parent-fix.patch
deleted file mode 100644
index d859893..0000000
--- a/mozilla-1605795-popup-parent-fix.patch
+++ /dev/null
@@ -1,231 +0,0 @@
-diff --git a/widget/gtk/nsWindow.h b/widget/gtk/nsWindow.h
---- a/widget/gtk/nsWindow.h
-+++ b/widget/gtk/nsWindow.h
-@@ -687,6 +687,9 @@
- void HideWaylandPopupAndAllChildren();
- void CleanupWaylandPopups();
- GtkWindow* GetCurrentTopmostWindow();
-+ GtkWindow* GetCurrentWindow();
-+ GtkWindow* GetTopmostWindow();
-+ bool IsWidgetOverflowWindow();
-
- /**
- * |mIMContext| takes all IME related stuff.
-diff --git a/widget/gtk/nsWindow.cpp b/widget/gtk/nsWindow.cpp
---- a/widget/gtk/nsWindow.cpp
-+++ b/widget/gtk/nsWindow.cpp
-@@ -1193,20 +1193,26 @@
- while (popupList) {
- LOG((" Looking for %p [nsWindow]\n", popupList->data));
- nsWindow* waylandWnd = static_cast<nsWindow*>(popupList->data);
-- bool popupFound = false;
-- for (unsigned long i = 0; i < widgetChain.Length(); i++) {
-- if (waylandWnd == widgetChain[i]) {
-- popupFound = true;
-- break;
-+ // Remove only menu popups or empty frames - they are most likely
-+ // already rolledup popups
-+ if (waylandWnd->IsMainMenuWindow() || !waylandWnd->GetFrame()) {
-+ bool popupFound = false;
-+ for (unsigned long i = 0; i < widgetChain.Length(); i++) {
-+ if (waylandWnd == widgetChain[i]) {
-+ popupFound = true;
-+ break;
-+ }
- }
-- }
-- if (!popupFound) {
-- LOG((" nsWindow [%p] not found in PopupManager, hiding it.\n",
-- waylandWnd));
-- waylandWnd->HideWaylandWindow();
-- popupList = gVisibleWaylandPopupWindows;
-+ if (!popupFound) {
-+ LOG((" nsWindow [%p] not found in PopupManager, hiding it.\n",
-+ waylandWnd));
-+ waylandWnd->HideWaylandWindow();
-+ popupList = gVisibleWaylandPopupWindows;
-+ } else {
-+ LOG((" nsWindow [%p] is still open.\n", waylandWnd));
-+ popupList = popupList->next;
-+ }
- } else {
-- LOG((" nsWindow [%p] is still open.\n", waylandWnd));
- popupList = popupList->next;
- }
- }
-@@ -1229,6 +1235,55 @@
- return false;
- }
-
-+GtkWindow* nsWindow::GetTopmostWindow() {
-+ nsView* view = nsView::GetViewFor(this);
-+ if (view) {
-+ nsView* parentView = view->GetParent();
-+ if (parentView) {
-+ nsIWidget* parentWidget = parentView->GetNearestWidget(nullptr);
-+ if (parentWidget) {
-+ nsWindow* parentnsWindow = static_cast<nsWindow*>(parentWidget);
-+ LOG((" Topmost window: %p [nsWindow]\n", parentnsWindow));
-+ return GTK_WINDOW(parentnsWindow->mShell);
-+ }
-+ }
-+ }
-+ return nullptr;
-+}
-+
-+GtkWindow* nsWindow::GetCurrentWindow() {
-+ GtkWindow* parentGtkWindow = nullptr;
-+ // get the last opened window from gVisibleWaylandPopupWindows
-+ if (gVisibleWaylandPopupWindows) {
-+ nsWindow* parentnsWindow =
-+ static_cast<nsWindow*>(gVisibleWaylandPopupWindows->data);
-+ if (parentnsWindow) {
-+ LOG((" Setting parent to last opened window: %p [nsWindow]\n",
-+ parentnsWindow));
-+ parentGtkWindow = GTK_WINDOW(parentnsWindow->GetGtkWidget());
-+ }
-+ }
-+ // get the topmost window if the last opened windows are empty
-+ if (!parentGtkWindow) {
-+ parentGtkWindow = GetTopmostWindow();
-+ }
-+ if (parentGtkWindow && GTK_IS_WINDOW(parentGtkWindow)) {
-+ return GTK_WINDOW(parentGtkWindow);
-+ } else {
-+ LOG((" Failed to get current window for %p: %p\n", this, parentGtkWindow));
-+ }
-+ return nullptr;
-+}
-+
-+bool nsWindow::IsWidgetOverflowWindow() {
-+ if (this->GetFrame() && this->GetFrame()->GetContent()->GetID()) {
-+ nsCString nodeId;
-+ this->GetFrame()->GetContent()->GetID()->ToUTF8String(nodeId);
-+ return nodeId.Equals("widget-overflow");
-+ }
-+ return false;
-+}
-+
- // Wayland keeps strong popup window hierarchy. We need to track active
- // (visible) popup windows and make sure we hide popup on the same level
- // before we open another one on that level. It means that every open
-@@ -1247,9 +1302,18 @@
- }
- #endif
-
-- // Check if we're already configured.
-+ if (!GetFrame()) {
-+ LOG((" Window without frame cannot be configured.\n"));
-+ return nullptr;
-+ }
-+
-+ // Check if we're already configured. Popup can be reattached to various
-+ // windows, so don't consider them configured. Also the widget-overflow needs
-+ // special care because the opened (remote) popups has to be closed before is
-+ // it shown again.
- if (gVisibleWaylandPopupWindows &&
-- g_list_find(gVisibleWaylandPopupWindows, this)) {
-+ g_list_find(gVisibleWaylandPopupWindows, this) &&
-+ mPopupType != ePopupTypeTooltip && !IsWidgetOverflowWindow()) {
- LOG((" [%p] is already configured.\n", (void*)this));
- return GTK_WIDGET(gtk_window_get_transient_for(GTK_WINDOW(mShell)));
- }
-@@ -1257,80 +1321,30 @@
- // If we're opening a new window we don't want to attach it to a tooltip
- // as it's short lived temporary window.
- HideWaylandTooltips();
-+ // Cleanup already closed menus
-+ CleanupWaylandPopups();
-
- GtkWindow* parentGtkWindow = nullptr;
--
-- if (IsMainMenuWindow()) {
-- // Remove and hide already closed popups from the
-- // gVisibleWaylandPopupWindows which were not yet been hidden.
-- CleanupWaylandPopups();
-- // Since the popups are shown by unknown order it can happen that child
-- // popup is shown before parent popup.
-- // We look for the current window parent in nsXULPopupManager since it
-- // always has correct popup hierarchy while gVisibleWaylandPopupWindows may
-- // not.
-- nsXULPopupManager* pm = nsXULPopupManager::GetInstance();
-- AutoTArray<nsIWidget*, 5> widgetChain;
-- pm->GetSubmenuWidgetChain(&widgetChain);
-- for (unsigned long i = 0; i < widgetChain.Length() - 1; i++) {
-- unsigned long parentIndex = i + 1;
-- if (widgetChain.Length() > parentIndex && widgetChain[i] == this) {
-- nsWindow* parentWindow =
-- static_cast<nsWindow*>(widgetChain[parentIndex]);
-- parentGtkWindow = GTK_WINDOW(parentWindow->GetGtkWidget());
-- LOG((" [%p] Found %p as parent in nsXULPopupManager.", this,
-- parentWindow));
-- break;
-- }
-- }
-- } else {
-- // Panels usually ends there
-- if (gVisibleWaylandPopupWindows && HasRemoteContent()) {
-- // If the new panel is remote content, we need to close all other popups
-- // before to keep the correct hierarchy because the remote content popup
-- // can replace the overflow-widget panel.
-- HideWaylandOpenedPopups();
-- } else if (gVisibleWaylandPopupWindows) {
-- // If there is any remote content panel currently opened, close all
-- // opened popups to keep the correct hierarchy.
-- GList* popupList = gVisibleWaylandPopupWindows;
-- while (popupList) {
-- nsWindow* waylandWnd = static_cast<nsWindow*>(popupList->data);
-- LOG((" Checking [%p] IsRemoteContent %d\n", popupList->data,
-- waylandWnd->IsRemoteContent()));
-- if (waylandWnd->IsRemoteContent()) {
-- // close all popups including remote content before showing our panel
-- // Most likely returning from addon panel to overflow-widget.
-- HideWaylandOpenedPopups();
-- break;
-- }
-- popupList = popupList->next;
-- }
-- }
-- // For popups in panels use the last opened popup window as parent,
-- // panels are not stored in nsXULPopupManager.
-- if (gVisibleWaylandPopupWindows) {
-- nsWindow* parentWindow =
-- static_cast<nsWindow*>(gVisibleWaylandPopupWindows->data);
-- parentGtkWindow = GTK_WINDOW(parentWindow->GetGtkWidget());
-- }
-- }
-+ if (HasRemoteContent() || IsWidgetOverflowWindow()) {
-+ LOG(
-+ (" Hiding all opened popups because the window is remote content or "
-+ "overflow-widget"));
-+ HideWaylandOpenedPopups();
-+ }
-+
-+ parentGtkWindow = GetCurrentWindow();
- if (parentGtkWindow) {
- MOZ_ASSERT(parentGtkWindow != GTK_WINDOW(this->GetGtkWidget()),
- "Cannot set self as parent");
- gtk_window_set_transient_for(GTK_WINDOW(mShell),
- GTK_WINDOW(parentGtkWindow));
-- } else {
-- // Fallback to the parent given in nsWindow::Create (most likely the
-- // toplevel window).
-- parentGtkWindow = gtk_window_get_transient_for(GTK_WINDOW(mShell));
-- LOG((" Setting parent from transient: %p [GtkWindow]\n", parentGtkWindow));
-- }
-- // Add current window to the visible popup list
-- gVisibleWaylandPopupWindows =
-- g_list_prepend(gVisibleWaylandPopupWindows, this);
--
-- LOG((" Parent window for %p: %p [GtkWindow]", this, parentGtkWindow));
-+ // Add current window to the visible popup list
-+ gVisibleWaylandPopupWindows =
-+ g_list_prepend(gVisibleWaylandPopupWindows, this);
-+ LOG((" Parent window for %p: %p [GtkWindow]", this, parentGtkWindow));
-+ }
-+
-+ MOZ_ASSERT(parentGtkWindow, "NO parent window for %p: expect popup glitches");
- return GTK_WIDGET(parentGtkWindow);
- }
-
-
diff --git a/mozilla-1607404-fix-remote-offset.patch b/mozilla-1607404-fix-remote-offset.patch
deleted file mode 100644
index 41a6fdc..0000000
--- a/mozilla-1607404-fix-remote-offset.patch
+++ /dev/null
@@ -1,109 +0,0 @@
-diff --git a/widget/gtk/nsWindow.h b/widget/gtk/nsWindow.h
---- a/widget/gtk/nsWindow.h
-+++ b/widget/gtk/nsWindow.h
-@@ -427,6 +427,8 @@
- #endif
- bool IsRemoteContent() { return HasRemoteContent(); }
- static void HideWaylandOpenedPopups();
-+ void NativeMoveResizeWaylandPopupCB(const GdkRectangle* aFinalSize,
-+ bool aFlippedX, bool aFlippedY);
-
- protected:
- virtual ~nsWindow();
-diff --git a/widget/gtk/nsWindow.cpp b/widget/gtk/nsWindow.cpp
---- a/widget/gtk/nsWindow.cpp
-+++ b/widget/gtk/nsWindow.cpp
-@@ -1333,7 +1333,6 @@
- return GTK_WIDGET(parentGtkWindow);
- }
-
--#ifdef DEBUG
- static void NativeMoveResizeWaylandPopupCallback(
- GdkWindow* window, const GdkRectangle* flipped_rect,
- const GdkRectangle* final_rect, gboolean flipped_x, gboolean flipped_y,
-@@ -1341,12 +1340,60 @@
- LOG(("NativeMoveResizeWaylandPopupCallback [%p] flipped_x %d flipped_y %d\n",
- aWindow, flipped_x, flipped_y));
-
-- LOG((" flipped_rect x: %d y: %d width: %d height: %d\n", flipped_rect->x,
-+ LOG((" flipped_rect x=%d y=%d width=%d height=%d\n", flipped_rect->x,
- flipped_rect->y, flipped_rect->width, flipped_rect->height));
-- LOG((" final_rect x: %d y: %d width: %d height: %d\n", final_rect->x,
-+ LOG((" final_rect x=%d y=%d width=%d height=%d\n", final_rect->x,
- final_rect->y, final_rect->width, final_rect->height));
--}
--#endif
-+ nsWindow* wnd = get_window_for_gdk_window(window);
-+
-+ wnd->NativeMoveResizeWaylandPopupCB(final_rect, flipped_x, flipped_y);
-+}
-+
-+void nsWindow::NativeMoveResizeWaylandPopupCB(const GdkRectangle* aFinalSize,
-+ bool aFlippedX, bool aFlippedY) {
-+ LOG((" orig mBounds x=%d y=%d width=%d height=%d\n", mBounds.x, mBounds.y,
-+ mBounds.width, mBounds.height));
-+
-+ GtkWindow* parentGtkWindow = gtk_window_get_transient_for(GTK_WINDOW(mShell));
-+ if (!parentGtkWindow) {
-+ NS_WARNING("Popup has no parent!");
-+ return;
-+ }
-+
-+ // The position of the menu in GTK is relative to it's parent window while
-+ // in mBounds we have position relative to toplevel window. We need to check
-+ // and update mBounds in the toplevel coordinates.
-+ int x_parent, y_parent;
-+ gdk_window_get_origin(gtk_widget_get_window(GTK_WIDGET(parentGtkWindow)),
-+ &x_parent, &y_parent);
-+
-+ LayoutDeviceIntRect newBounds(aFinalSize->x + x_parent,
-+ aFinalSize->y + y_parent, aFinalSize->width,
-+ aFinalSize->height);
-+
-+ newBounds.Scale(nsWindow::GdkScaleFactor());
-+ LOG((" new mBounds x=%d y=%d width=%d height=%d\n", newBounds.x,
-+ newBounds.y, newBounds.width, newBounds.height));
-+
-+ bool needsPositionUpdate =
-+ (newBounds.x != mBounds.x || newBounds.y != mBounds.y);
-+ bool needsSizeUpdate =
-+ (newBounds.width != mBounds.width || newBounds.height != mBounds.height);
-+
-+ if (!needsPositionUpdate && !needsSizeUpdate) {
-+ return;
-+ }
-+
-+ if (needsPositionUpdate && needsSizeUpdate) {
-+ Resize(newBounds.x, newBounds.y, newBounds.width, newBounds.height, true);
-+ NotifyWindowMoved(newBounds.x, newBounds.y);
-+ } else if (needsPositionUpdate) {
-+ Move(newBounds.x, newBounds.y);
-+ NotifyWindowMoved(newBounds.x, newBounds.y);
-+ } else {
-+ Resize(newBounds.width, newBounds.height, true);
-+ }
-+}
-
- void nsWindow::NativeMoveResizeWaylandPopup(GdkPoint* aPosition,
- GdkRectangle* aSize) {
-@@ -1392,15 +1439,16 @@
- rect.width = aSize->width;
- rect.height = aSize->height;
- }
--
--#ifdef DEBUG
-+ LOG((" x_parent %d y_parent %d\n", x_parent, y_parent));
-+ LOG((" aPosition x %d aPosition y %d\n", aPosition->x, aPosition->y));
-+ LOG((" rect.x %d rect.y %d\n", rect.x, rect.y));
-+
- if (!g_signal_handler_find(
- gdkWindow, G_SIGNAL_MATCH_FUNC, 0, 0, nullptr,
- FuncToGpointer(NativeMoveResizeWaylandPopupCallback), this)) {
- g_signal_connect(gdkWindow, "moved-to-rect",
- G_CALLBACK(NativeMoveResizeWaylandPopupCallback), this);
- }
--#endif
-
- GdkGravity rectAnchor = GDK_GRAVITY_NORTH_WEST;
- GdkGravity menuAnchor = GDK_GRAVITY_NORTH_WEST;
-
diff --git a/mozilla-1609732-no-full-hide.patch b/mozilla-1609732-no-full-hide.patch
deleted file mode 100644
index 9894ed4..0000000
--- a/mozilla-1609732-no-full-hide.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-diff --git a/widget/gtk/WindowSurfaceWayland.cpp b/widget/gtk/WindowSurfaceWayland.cpp
---- a/widget/gtk/WindowSurfaceWayland.cpp
-+++ b/widget/gtk/WindowSurfaceWayland.cpp
-@@ -805,6 +805,10 @@
- mBufferCommitAllowed = false;
-
- LayoutDeviceIntRect lockedScreenRect = mWindow->GetBounds();
-+ // The window bounds of popup windows contains relative position to
-+ // the transient window. We need to remove that effect because by changing
-+ // position of the popup window the buffer has not changed its size.
-+ lockedScreenRect.x = lockedScreenRect.y = 0;
- gfx::IntRect lockSize = aRegion.GetBounds().ToUnknownRect();
-
- bool isTransparentPopup =
-diff --git a/widget/gtk/nsWindow.cpp b/widget/gtk/nsWindow.cpp
---- a/widget/gtk/nsWindow.cpp
-+++ b/widget/gtk/nsWindow.cpp
-@@ -1324,6 +1324,7 @@
- // Fallback to the parent given in nsWindow::Create (most likely the
- // toplevel window).
- parentGtkWindow = gtk_window_get_transient_for(GTK_WINDOW(mShell));
-+ LOG((" Setting parent from transient: %p [GtkWindow]\n", parentGtkWindow));
- }
- // Add current window to the visible popup list
- gVisibleWaylandPopupWindows =
-@@ -1355,7 +1356,7 @@
- mBounds.width, mBounds.height));
-
- GtkWindow* parentGtkWindow = gtk_window_get_transient_for(GTK_WINDOW(mShell));
-- if (!parentGtkWindow) {
-+ if (!parentGtkWindow || !GTK_IS_WIDGET(parentGtkWindow)) {
- NS_WARNING("Popup has no parent!");
- return;
- }
-@@ -1431,8 +1432,13 @@
- parentWindow));
-
- int x_parent, y_parent;
-- gdk_window_get_origin(gtk_widget_get_window(GTK_WIDGET(parentWindow)),
-- &x_parent, &y_parent);
-+ if (parentWindow) {
-+ gdk_window_get_origin(gtk_widget_get_window(GTK_WIDGET(parentWindow)),
-+ &x_parent, &y_parent);
-+ } else {
-+ NS_WARNING(("no parent window, this should not happen for popup!"));
-+ x_parent = y_parent = 0;
-+ }
-
- GdkRectangle rect = {aPosition->x - x_parent, aPosition->y - y_parent, 1, 1};
- if (aSize) {
-@@ -1470,7 +1476,7 @@
- bool isWidgetVisible =
- (sGtkWidgetIsVisible != nullptr) && sGtkWidgetIsVisible(mShell);
- if (isWidgetVisible) {
-- HideWaylandWindow();
-+ gtk_widget_hide(mShell);
- }
-
- LOG((" requested rect: x: %d y: %d width: %d height: %d\n", rect.x, rect.y,
-
diff --git a/mozilla-1609732-pause-renderer.patch b/mozilla-1609732-pause-renderer.patch
deleted file mode 100644
index 6f159e1..0000000
--- a/mozilla-1609732-pause-renderer.patch
+++ /dev/null
@@ -1,73 +0,0 @@
-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);
- }
-
-
diff --git a/sources b/sources
index 93e317d..f425f6c 100644
--- a/sources
+++ b/sources
@@ -1,3 +1,3 @@
SHA512 (cbindgen-vendor.tar.xz) = 9709c47df2dfb615554c6616c1d9f94c7a408ea4382400bd9f75eae29b0819a6418b5625eb0df2508fcbbbb74672347d00a5f6557755b9dd9de7d42fb2e509c4
-SHA512 (firefox-73.0.1.source.tar.xz) = 89fac2c50e092f2805f48399f68cdf0793324e1dce89266f62b76e9b335dfc553ae54a36738992630b6035a52cd65b9aa774e7e54cea2e3ec7d609d9219cdf76
-SHA512 (firefox-langpacks-73.0.1-20200220.tar.xz) = 652f9ebfcec2921d13baea5433d86f160bea66e0b528f94874ff19a9e1b73978c23651dce964755ca2bc87fecd2baeb239f613230fb2fe59b8bcd0b4d40f296f
+SHA512 (firefox-74.0.source.tar.xz) = 83fcdf1a8a702cc480314dbbef0a819f95fac2ebbe275207b052ba8d62bfa9d93dc21b25ebfc466e798933e3f7b9a3bd9afc6afc295451495bb3d8a2bf864f44
+SHA512 (firefox-langpacks-74.0-20200303.tar.xz) = 3cdb50c27adaaa85d727f2a8c0c6a284092fa4af815fdfbc8d170066287b22b566d052cc8e151ed901bcebf1a5ae2f19bb68be543738d35eac4a316aadb78232
bgstack15