diff --git a/.gitignore b/.gitignore index dddba34..4900773 100644 --- a/.gitignore +++ b/.gitignore @@ -393,3 +393,5 @@ firefox-3.6.4.source.tar.bz2 /firefox-langpacks-74.0.1-20200404.tar.xz /firefox-75.0.source.tar.xz /firefox-langpacks-75.0-20200406.tar.xz +/firefox-76.0.source.tar.xz +/firefox-langpacks-76.0-20200502.tar.xz diff --git a/browser-tabbar-dad-mzbz1527976.patch b/browser-tabbar-dad-mzbz1527976.patch deleted file mode 100644 index d87d997..0000000 --- a/browser-tabbar-dad-mzbz1527976.patch +++ /dev/null @@ -1,133 +0,0 @@ -diff --git a/widget/gtk/nsClipboardWayland.cpp b/widget/gtk/nsClipboardWayland.cpp ---- a/widget/gtk/nsClipboardWayland.cpp -+++ b/widget/gtk/nsClipboardWayland.cpp -@@ -538,7 +538,6 @@ - } - - LOGDRAG(("nsWindow data_device_enter for GtkWidget %p\n", (void*)gtkWidget)); -- - dragContext->DropDataEnter(gtkWidget, time, wl_fixed_to_int(x_fixed), - wl_fixed_to_int(y_fixed)); - } -@@ -550,6 +549,8 @@ - nsWaylandDragContext* dropContext = context->GetDragContext(); - WindowDragLeaveHandler(dropContext->GetWidget()); - -+ LOGDRAG(("nsWindow data_device_leave for GtkWidget %p\n", -+ (void*)dropContext->GetWidget())); - context->ClearDragAndDropDataOffer(); - } - -@@ -565,6 +566,8 @@ - nscoord y = wl_fixed_to_int(y_fixed); - dropContext->DropMotion(time, x, y); - -+ LOGDRAG(("nsWindow data_device_motion for GtkWidget %p\n", -+ (void*)dropContext->GetWidget())); - WindowDragMotionHandler(dropContext->GetWidget(), nullptr, dropContext, x, y, - time); - } -@@ -578,6 +581,8 @@ - nscoord x, y; - dropContext->GetLastDropInfo(&time, &x, &y); - -+ LOGDRAG(("nsWindow data_device_drop GtkWidget %p\n", -+ (void*)dropContext->GetWidget())); - WindowDragDropHandler(dropContext->GetWidget(), nullptr, dropContext, x, y, - time); - } -diff --git a/widget/gtk/nsDragService.cpp b/widget/gtk/nsDragService.cpp ---- a/widget/gtk/nsDragService.cpp -+++ b/widget/gtk/nsDragService.cpp -@@ -45,6 +45,7 @@ - #include "nsArrayUtils.h" - #ifdef MOZ_WAYLAND - # include "nsClipboardWayland.h" -+# include "gfxPlatformGtk.h" - #endif - - using namespace mozilla; -@@ -59,7 +60,14 @@ - // directly) so that this code can be compiled against versions of GTK+ that - // do not have GtkDragResult. - // GtkDragResult is available from GTK+ version 2.12. --enum { MOZ_GTK_DRAG_RESULT_SUCCESS, MOZ_GTK_DRAG_RESULT_NO_TARGET }; -+enum { -+ MOZ_GTK_DRAG_RESULT_SUCCESS, -+ MOZ_GTK_DRAG_RESULT_NO_TARGET, -+ MOZ_GTK_DRAG_RESULT_USER_CANCELLED, -+ MOZ_GTK_DRAG_RESULT_TIMEOUT_EXPIRED, -+ MOZ_GTK_DRAG_RESULT_GRAB_BROKEN, -+ MOZ_GTK_DRAG_RESULT_ERROR -+}; - - static LazyLogModule sDragLm("nsDragService"); - -@@ -74,6 +82,7 @@ - static const char gTextUriListType[] = "text/uri-list"; - static const char gTextPlainUTF8Type[] = "text/plain;charset=utf-8"; - static const char gXdndDirectSaveType[] = "XdndDirectSave0"; -+static const char gTabDropType[] = "application/x-moz-tabbrowser-tab"; - - static void invisibleSourceDragBegin(GtkWidget* aWidget, - GdkDragContext* aContext, gpointer aData); -@@ -346,12 +355,10 @@ - gtk_window_get_group(GetGtkWindow(mSourceDocument)); - gtk_window_group_add_window(window_group, GTK_WINDOW(mHiddenWidget)); - --#ifdef MOZ_WIDGET_GTK - // Get device for event source - GdkDisplay* display = gdk_display_get_default(); - GdkDeviceManager* device_manager = gdk_display_get_device_manager(display); - event.button.device = gdk_device_manager_get_client_pointer(device_manager); --#endif - - // start our drag. - GdkDragContext* context = -@@ -1252,6 +1259,9 @@ - - void nsDragService::SourceEndDragSession(GdkDragContext* aContext, - gint aResult) { -+ MOZ_LOG(sDragLm, LogLevel::Debug, -+ ("SourceEndDragSession result %d\n", aResult)); -+ - // this just releases the list of data items that we provide - mSourceDataItems = nullptr; - -@@ -1272,6 +1282,8 @@ - gint scale = mozilla::widget::ScreenHelperGTK::GetGTKMonitorScaleFactor(); - gdk_display_get_pointer(display, nullptr, &x, &y, nullptr); - SetDragEndPoint(LayoutDeviceIntPoint(x * scale, y * scale)); -+ MOZ_LOG(sDragLm, LogLevel::Debug, -+ ("guess drag end point %d %d\n", x * scale, y * scale)); - } - } - -@@ -1307,7 +1319,25 @@ - } else { - dropEffect = DRAGDROP_ACTION_NONE; - -- if (aResult != MOZ_GTK_DRAG_RESULT_NO_TARGET) { -+ bool isWaylandTabDrop = false; -+#ifdef MOZ_WAYLAND -+ // Bug 1527976. Wayland protocol does not have any way how to handle -+ // MOZ_GTK_DRAG_RESULT_NO_TARGET drop result so consider all tab -+ // drops as not cancelled on wayland. -+ if (gfxPlatformGtk::GetPlatform()->IsWaylandDisplay() && -+ aResult == MOZ_GTK_DRAG_RESULT_ERROR) { -+ for (GList* tmp = gdk_drag_context_list_targets(aContext); tmp; -+ tmp = tmp->next) { -+ GdkAtom atom = GDK_POINTER_TO_ATOM(tmp->data); -+ gchar* name = gdk_atom_name(atom); -+ if (name && (strcmp(name, gTabDropType) == 0)) { -+ isWaylandTabDrop = true; -+ break; -+ } -+ } -+ } -+#endif -+ if (aResult != MOZ_GTK_DRAG_RESULT_NO_TARGET && !isWaylandTabDrop) { - mUserCancelled = true; - } - } - diff --git a/firefox-nss-version.patch b/firefox-nss-version.patch index d154968..02f33f0 100644 --- a/firefox-nss-version.patch +++ b/firefox-nss-version.patch @@ -1,12 +1,12 @@ -diff -up firefox-75.0/old-configure.in.nss-version firefox-75.0/old-configure.in ---- firefox-75.0/old-configure.in.nss-version 2020-04-07 07:59:28.091106813 +0200 -+++ firefox-75.0/old-configure.in 2020-04-07 08:00:30.272678298 +0200 -@@ -1504,7 +1504,7 @@ MOZ_ARG_WITH_BOOL(system-nss, +diff -up firefox-76.0/old-configure.in.nss-version firefox-76.0/old-configure.in +--- firefox-76.0/old-configure.in.nss-version 2020-05-03 19:12:01.771863688 +0200 ++++ firefox-76.0/old-configure.in 2020-05-03 19:17:53.216898766 +0200 +@@ -1506,7 +1506,7 @@ MOZ_ARG_WITH_BOOL(system-nss, _USE_SYSTEM_NSS=1 ) if test -n "$_USE_SYSTEM_NSS"; then -- AM_PATH_NSS(3.51, [MOZ_SYSTEM_NSS=1], [AC_MSG_ERROR([you don't have NSS installed or your version is too old])]) -+ AM_PATH_NSS(3.50, [MOZ_SYSTEM_NSS=1], [AC_MSG_ERROR([you don't have NSS installed or your version is too old])]) +- AM_PATH_NSS(3.51.1, [MOZ_SYSTEM_NSS=1], [AC_MSG_ERROR([you don't have NSS installed or your version is too old])]) ++ AM_PATH_NSS(3.51, [MOZ_SYSTEM_NSS=1], [AC_MSG_ERROR([you don't have NSS installed or your version is too old])]) fi NSS_CFLAGS="$NSS_CFLAGS -I${DIST}/include/nss" diff --git a/firefox.spec b/firefox.spec index 9b98f3f..b9b0727 100644 --- a/firefox.spec +++ b/firefox.spec @@ -117,13 +117,13 @@ ExcludeArch: s390x Summary: Mozilla Firefox Web browser Name: firefox -Version: 75.0 -Release: 3%{?nss_tag}%{?dist} +Version: 76.0 +Release: 1%{?nss_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}-20200406.tar.xz +Source1: firefox-langpacks-%{version}%{?pre_version}-20200502.tar.xz %endif Source2: cbindgen-vendor.tar.xz Source10: firefox-mozconfig @@ -183,13 +183,9 @@ Patch412: mozilla-1337988.patch Patch415: Bug-1238661---fix-mozillaSignalTrampoline-to-work-.patch Patch417: bug1375074-save-restore-x28.patch Patch422: mozilla-1580174-webrtc-popup.patch -Patch425: mozilla-1623106.patch # Wayland specific upstream patches Patch574: firefox-pipewire.patch -Patch576: mozilla-1623060.patch -Patch578: mozilla-1627469.patch -Patch579: browser-tabbar-dad-mzbz1527976.patch # PGO/LTO patches Patch600: pgo.patch @@ -388,8 +384,6 @@ This package contains results of tests executed during build. #%patch241 -p1 -b .kiosk-workaround %patch242 -p1 -b .gnome-shell-search-fixes -%patch425 -p1 -b .1623106 - %patch402 -p1 -b .1196777 %ifarch %{arm} %patch415 -p1 -b .1238661 @@ -397,13 +391,11 @@ This package contains results of tests executed during build. # Wayland specific upstream patches %patch574 -p1 -b .firefox-pipewire -%patch576 -p1 -b .mozilla-1623060 -%patch578 -p1 -b .mozilla-1627469 -%patch579 -p1 -b .mozilla-1527976 # PGO patches %patch600 -p1 -b .pgo -%patch601 -p1 -b .1516081 +#fix +#%patch601 -p1 -b .1516081 %patch602 -p1 -b .1516803 %{__rm} -f .mozconfig @@ -966,6 +958,9 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : #--------------------------------------------------------------------- %changelog +* Sun May 3 2020 Martin Stransky - 76.0-1 +- Updated to 76.0 + * Thu Apr 23 2020 Martin Stransky - 75.0-3 - Added fix for mozilla bug #1527976 (browser D&D) diff --git a/mozilla-1623060.patch b/mozilla-1623060.patch deleted file mode 100644 index 6e2d2cd..0000000 --- a/mozilla-1623060.patch +++ /dev/null @@ -1,257 +0,0 @@ -diff -up firefox-75.0/modules/libpref/init/StaticPrefList.yaml.mozilla-1623060 firefox-75.0/modules/libpref/init/StaticPrefList.yaml ---- firefox-75.0/modules/libpref/init/StaticPrefList.yaml.mozilla-1623060 2020-04-03 21:34:57.000000000 +0200 -+++ firefox-75.0/modules/libpref/init/StaticPrefList.yaml 2020-04-06 23:03:37.631884410 +0200 -@@ -8600,15 +8600,6 @@ - type: RelaxedAtomicBool - value: false - mirror: always -- --# Wayland basic (non-accelerated) compositor cache mode. --# 0 = Default (everything is cached). --# 1 = Cache only missing drawing. --# 2 = No cache --- name: widget.wayland-cache-mode -- type: RelaxedAtomicInt32 -- value: 0 -- mirror: always - #endif - - #--------------------------------------------------------------------------- -diff -up firefox-75.0/widget/gtk/nsWaylandDisplay.cpp.mozilla-1623060 firefox-75.0/widget/gtk/nsWaylandDisplay.cpp ---- firefox-75.0/widget/gtk/nsWaylandDisplay.cpp.mozilla-1623060 2020-04-03 21:35:43.000000000 +0200 -+++ firefox-75.0/widget/gtk/nsWaylandDisplay.cpp 2020-04-06 23:03:37.632884403 +0200 -@@ -523,9 +523,6 @@ bool nsWaylandDisplay::IsDMABufVAAPIEnab - return IsDMABufEnabled() && - StaticPrefs::widget_wayland_dmabuf_vaapi_enabled(); - } --int nsWaylandDisplay::GetRenderingCacheModePref() { -- return StaticPrefs::widget_wayland_cache_mode(); --} - - void* nsGbmLib::sGbmLibHandle = nullptr; - void* nsGbmLib::sXf86DrmLibHandle = nullptr; -diff -up firefox-75.0/widget/gtk/nsWaylandDisplay.h.mozilla-1623060 firefox-75.0/widget/gtk/nsWaylandDisplay.h ---- firefox-75.0/widget/gtk/nsWaylandDisplay.h.mozilla-1623060 2020-04-03 21:35:39.000000000 +0200 -+++ firefox-75.0/widget/gtk/nsWaylandDisplay.h 2020-04-06 23:03:37.632884403 +0200 -@@ -93,7 +93,6 @@ class nsWaylandDisplay { - static bool IsDMABufTexturesEnabled(); - static bool IsDMABufWebGLEnabled(); - static bool IsDMABufVAAPIEnabled(); -- static int GetRenderingCacheModePref(); - - private: - bool ConfigureGbm(); -diff -up firefox-75.0/widget/gtk/nsWindow.cpp.mozilla-1623060 firefox-75.0/widget/gtk/nsWindow.cpp ---- firefox-75.0/widget/gtk/nsWindow.cpp.mozilla-1623060 2020-04-06 23:03:37.627884434 +0200 -+++ firefox-75.0/widget/gtk/nsWindow.cpp 2020-04-06 23:03:37.633884397 +0200 -@@ -7925,3 +7925,15 @@ void nsWindow::SetEGLNativeWindowSize( - - nsWindow* nsWindow::GetFocusedWindow() { return gFocusWindow; } - #endif -+ -+LayoutDeviceIntRect nsWindow::GetMozContainerSize() { -+ LayoutDeviceIntRect size(0, 0, 0, 0); -+ if (mContainer) { -+ GtkAllocation allocation; -+ gtk_widget_get_allocation(GTK_WIDGET(mContainer), &allocation); -+ int scale = GdkScaleFactor(); -+ size.width = allocation.width * scale; -+ size.height = allocation.height * scale; -+ } -+ return size; -+} -diff -up firefox-75.0/widget/gtk/nsWindow.h.mozilla-1623060 firefox-75.0/widget/gtk/nsWindow.h ---- firefox-75.0/widget/gtk/nsWindow.h.mozilla-1623060 2020-04-03 21:35:39.000000000 +0200 -+++ firefox-75.0/widget/gtk/nsWindow.h 2020-04-06 23:03:37.632884403 +0200 -@@ -293,6 +293,7 @@ class nsWindow final : public nsBaseWidg - int32_t aVertical) override; - - MozContainer* GetMozContainer() { return mContainer; } -+ LayoutDeviceIntRect GetMozContainerSize(); - // GetMozContainerWidget returns the MozContainer even for undestroyed - // descendant windows - GtkWidget* GetMozContainerWidget(); -diff -up firefox-75.0/widget/gtk/WindowSurfaceWayland.cpp.mozilla-1623060 firefox-75.0/widget/gtk/WindowSurfaceWayland.cpp ---- firefox-75.0/widget/gtk/WindowSurfaceWayland.cpp.mozilla-1623060 2020-04-03 21:35:43.000000000 +0200 -+++ firefox-75.0/widget/gtk/WindowSurfaceWayland.cpp 2020-04-06 23:03:37.632884403 +0200 -@@ -527,9 +527,6 @@ WindowSurfaceWayland::WindowSurfaceWayla - mShmBackupBuffer[i] = nullptr; - mDMABackupBuffer[i] = nullptr; - } -- mRenderingCacheMode = static_cast( -- mWaylandDisplay->GetRenderingCacheModePref()); -- LOGWAYLAND(("WindowSurfaceWayland Cache mode %d\n", mRenderingCacheMode)); - } - - WindowSurfaceWayland::~WindowSurfaceWayland() { -@@ -650,14 +647,13 @@ WindowBackBuffer* WindowSurfaceWayland:: - LOGWAYLAND( - ("WindowSurfaceWayland::NewWaylandBuffer [%p] Requested buffer [%d " - "x %d] DMABuf %d\n", -- (void*)this, mBufferScreenRect.width, mBufferScreenRect.height, -- aUseDMABufBackend)); -+ (void*)this, mWidgetRect.width, mWidgetRect.height, aUseDMABufBackend)); - - mWaylandBuffer = WaylandBufferFindAvailable( -- mBufferScreenRect.width, mBufferScreenRect.height, aUseDMABufBackend); -+ mWidgetRect.width, mWidgetRect.height, aUseDMABufBackend); - if (!mWaylandBuffer) { -- mWaylandBuffer = CreateWaylandBuffer( -- mBufferScreenRect.width, mBufferScreenRect.height, aUseDMABufBackend); -+ mWaylandBuffer = CreateWaylandBuffer(mWidgetRect.width, mWidgetRect.height, -+ aUseDMABufBackend); - } - - return mWaylandBuffer; -@@ -667,7 +663,7 @@ WindowBackBuffer* WindowSurfaceWayland:: - LOGWAYLAND( - ("WindowSurfaceWayland::GetWaylandBufferRecent [%p] Requested buffer [%d " - "x %d]\n", -- (void*)this, mBufferScreenRect.width, mBufferScreenRect.height)); -+ (void*)this, mWidgetRect.width, mWidgetRect.height)); - - // There's no buffer created yet, create a new one for partial screen updates. - if (!mWaylandBuffer) { -@@ -679,10 +675,9 @@ WindowBackBuffer* WindowSurfaceWayland:: - return nullptr; - } - -- if (mWaylandBuffer->IsMatchingSize(mBufferScreenRect.width, -- mBufferScreenRect.height)) { -- LOGWAYLAND((" Size is ok, use the buffer [%d x %d]\n", -- mBufferScreenRect.width, mBufferScreenRect.height)); -+ if (mWaylandBuffer->IsMatchingSize(mWidgetRect.width, mWidgetRect.height)) { -+ LOGWAYLAND((" Size is ok, use the buffer [%d x %d]\n", mWidgetRect.width, -+ mWidgetRect.height)); - return mWaylandBuffer; - } - -@@ -697,7 +692,7 @@ WindowBackBuffer* WindowSurfaceWayland:: - LOGWAYLAND( - ("WindowSurfaceWayland::GetWaylandBufferWithSwitch [%p] Requested buffer " - "[%d x %d]\n", -- (void*)this, mBufferScreenRect.width, mBufferScreenRect.height)); -+ (void*)this, mWidgetRect.width, mWidgetRect.height)); - - // There's no buffer created yet or actual buffer is attached, get a new one. - // Use DMABuf for fullscreen updates only. -@@ -706,18 +701,21 @@ WindowBackBuffer* WindowSurfaceWayland:: - } - - // Reuse existing buffer -- LOGWAYLAND((" Reuse buffer with resize [%d x %d]\n", -- mBufferScreenRect.width, mBufferScreenRect.height)); -+ LOGWAYLAND((" Reuse buffer with resize [%d x %d]\n", mWidgetRect.width, -+ mWidgetRect.height)); - - // OOM here, just return null to skip this frame. -- if (!mWaylandBuffer->Resize(mBufferScreenRect.width, -- mBufferScreenRect.height)) { -+ if (!mWaylandBuffer->Resize(mWidgetRect.width, mWidgetRect.height)) { - return nullptr; - } - return mWaylandBuffer; - } - - already_AddRefed WindowSurfaceWayland::LockWaylandBuffer() { -+ // Allocated wayland buffer must match widget size, otherwise wayland -+ // compositor is confused and may produce various rendering artifacts. -+ mWidgetRect = mWindow->GetMozContainerSize(); -+ - // mCanSwitchWaylandBuffer set means we're getting buffer for fullscreen - // update. We can use DMABuf and we can get a new buffer for drawing. - WindowBackBuffer* buffer = mCanSwitchWaylandBuffer -@@ -858,12 +856,12 @@ already_AddRefed Window - LOGWAYLAND((" windowRedraw = %d\n", windowRedraw)); - - #if MOZ_LOGGING -- if (!(mBufferScreenRect == lockedScreenRect)) { -+ if (!(mLockedScreenRect == lockedScreenRect)) { - LOGWAYLAND((" screen size changed\n")); - } - #endif - -- if (!(mBufferScreenRect == lockedScreenRect)) { -+ if (!(mLockedScreenRect == lockedScreenRect)) { - // Screen (window) size changed and we still have some painting pending - // for the last window size. That can happen when window is resized. - // We can't commit them any more as they're for former window size, so -@@ -878,17 +876,21 @@ already_AddRefed Window - // as it produces artifacts. - return nullptr; - } -- mBufferScreenRect = lockedScreenRect; -+ mLockedScreenRect = lockedScreenRect; - } - -- if (mRenderingCacheMode == CACHE_ALL) { -- mDrawToWaylandBufferDirectly = windowRedraw; -- } else if (mRenderingCacheMode == CACHE_MISSING) { -+ LayoutDeviceIntRect size = mWindow->GetMozContainerSize(); -+ -+ // We can draw directly only when widget has the same size as wl_buffer -+ mDrawToWaylandBufferDirectly = (size.width == mLockedScreenRect.width && -+ size.height == mLockedScreenRect.height); -+ -+ // We can draw directly only when we redraw significant part of the window -+ // to avoid flickering. -+ if (mDrawToWaylandBufferDirectly) { - mDrawToWaylandBufferDirectly = - windowRedraw || (lockSize.width * 3 > lockedScreenRect.width && - lockSize.height * 3 > lockedScreenRect.height); -- } else { -- mDrawToWaylandBufferDirectly = true; - } - - if (mDrawToWaylandBufferDirectly) { -@@ -903,11 +905,6 @@ already_AddRefed Window - } - } - -- // Any caching is disabled and we don't have any back buffer available. -- if (mRenderingCacheMode == CACHE_NONE) { -- return nullptr; -- } -- - // We do indirect drawing because there isn't any front buffer available. - // Do indirect drawing to mImageSurface which is commited to wayland - // wl_buffer by DrawDelayedImageCommits() later. -@@ -1151,7 +1148,7 @@ void WindowSurfaceWayland::Commit(const - ("WindowSurfaceWayland::Commit [%p] damage size [%d, %d] -> [%d x %d]" - "screenSize [%d x %d]\n", - (void*)this, lockSize.x, lockSize.y, lockSize.width, lockSize.height, -- mBufferScreenRect.width, mBufferScreenRect.height)); -+ mLockedScreenRect.width, mLockedScreenRect.height)); - LOGWAYLAND((" mDrawToWaylandBufferDirectly = %d\n", - mDrawToWaylandBufferDirectly)); - } -diff -up firefox-75.0/widget/gtk/WindowSurfaceWayland.h.mozilla-1623060 firefox-75.0/widget/gtk/WindowSurfaceWayland.h ---- firefox-75.0/widget/gtk/WindowSurfaceWayland.h.mozilla-1623060 2020-04-03 21:35:39.000000000 +0200 -+++ firefox-75.0/widget/gtk/WindowSurfaceWayland.h 2020-04-06 23:03:37.631884410 +0200 -@@ -261,8 +261,14 @@ class WindowSurfaceWayland : public Wind - nsWindow* mWindow; - // Buffer screen rects helps us understand if we operate on - // the same window size as we're called on WindowSurfaceWayland::Lock(). -- // mBufferScreenRect is window size when our wayland buffer was allocated. -- LayoutDeviceIntRect mBufferScreenRect; -+ // mLockedScreenRect is window size when our wayland buffer was allocated. -+ LayoutDeviceIntRect mLockedScreenRect; -+ -+ // WidgetRect is an actual size of mozcontainer widget. It can be -+ // different than mLockedScreenRect during resize when mBounds are updated -+ // immediately but actual GtkWidget size is updated asynchronously -+ // (see Bug 1489463). -+ LayoutDeviceIntRect mWidgetRect; - nsWaylandDisplay* mWaylandDisplay; - - // Actual buffer (backed by wl_buffer) where all drawings go into. -@@ -327,9 +333,6 @@ class WindowSurfaceWayland : public Wind - - bool mIsMainThread; - -- // Image caching strategy, see RenderingCacheMode for details. -- RenderingCacheMode mRenderingCacheMode; -- - static bool UseDMABufBackend(); - static bool mUseDMABufInitialized; - static bool mUseDMABuf; diff --git a/mozilla-1623106.patch b/mozilla-1623106.patch deleted file mode 100644 index 354d918..0000000 --- a/mozilla-1623106.patch +++ /dev/null @@ -1,73 +0,0 @@ -changeset: 521156:e856a981e2be -tag: tip -parent: 521144:5bfecf5aff6d -user: Martin Stransky -date: Tue Mar 17 21:22:44 2020 +0100 -files: widget/gtk/nsWindow.cpp -description: -Bug 1623106 [Linux/Gtk] Don't use window resize workaround for Gtk >= 3.24, r?jhorak - -We have a workaround for https://gitlab.gnome.org/GNOME/gtk/issues/1044 which is already fixed -in Gtk 3.24 and causes resize regression there so let's remove it. - -Differential Revision: https://phabricator.services.mozilla.com/D67387 - - -diff --git a/widget/gtk/nsWindow.cpp b/widget/gtk/nsWindow.cpp ---- a/widget/gtk/nsWindow.cpp -+++ b/widget/gtk/nsWindow.cpp -@@ -2739,16 +2739,18 @@ void nsWindow::OnContainerUnrealize() { - } - } - - void nsWindow::OnSizeAllocate(GtkAllocation* aAllocation) { - LOG(("nsWindow::OnSizeAllocate [%p] %d,%d -> %d x %d\n", (void*)this, - aAllocation->x, aAllocation->y, aAllocation->width, - aAllocation->height)); - -+ mBoundsAreValid = true; -+ - LayoutDeviceIntSize size = GdkRectToDevicePixels(*aAllocation).Size(); - if (mBounds.Size() == size) { - // We were already resized at nsWindow::OnConfigureEvent() so skip it. - return; - } - - // Invalidate the new part of the window now for the pending paint to - // minimize background flashes (GDK does not do this for external resizes -@@ -3524,23 +3526,27 @@ void nsWindow::OnWindowStateEvent(GtkWid - // maximized state, we hide the GDK_WINDOW_STATE_MAXIMIZED change from - // gtk_window_state_event() so as to trick GTK into using the values from - // gtk_window_resize() in its configure request. - // - // We instead notify gtk_window_state_event() of the maximized state change - // once the window is shown. - // - // See https://gitlab.gnome.org/GNOME/gtk/issues/1044 -- if (!mIsShown) { -- aEvent->changed_mask = static_cast( -- aEvent->changed_mask & ~GDK_WINDOW_STATE_MAXIMIZED); -- } else if (aEvent->changed_mask & GDK_WINDOW_STATE_WITHDRAWN && -- aEvent->new_window_state & GDK_WINDOW_STATE_MAXIMIZED) { -- aEvent->changed_mask = static_cast( -- aEvent->changed_mask | GDK_WINDOW_STATE_MAXIMIZED); -+ // -+ // This is fixed in Gtk 3.24+ -+ if (gtk_check_version(3, 24, 0) != nullptr) { -+ if (!mIsShown) { -+ aEvent->changed_mask = static_cast( -+ aEvent->changed_mask & ~GDK_WINDOW_STATE_MAXIMIZED); -+ } else if (aEvent->changed_mask & GDK_WINDOW_STATE_WITHDRAWN && -+ aEvent->new_window_state & GDK_WINDOW_STATE_MAXIMIZED) { -+ aEvent->changed_mask = static_cast( -+ aEvent->changed_mask | GDK_WINDOW_STATE_MAXIMIZED); -+ } - } - - // This is a workaround for https://gitlab.gnome.org/GNOME/gtk/issues/1395 - // Gtk+ controls window active appearance by window-state-event signal. - if (mDrawInTitlebar && (aEvent->changed_mask & GDK_WINDOW_STATE_FOCUSED)) { - // Emulate what Gtk+ does at gtk_window_state_event(). - // We can't check GTK_STATE_FLAG_BACKDROP directly as it's set by Gtk+ - // *after* this window-state-event handler. - diff --git a/mozilla-1627469.patch b/mozilla-1627469.patch deleted file mode 100644 index 3e53ec5..0000000 --- a/mozilla-1627469.patch +++ /dev/null @@ -1,113 +0,0 @@ -diff -up firefox-74.0.1/widget/gtk/WindowSurfaceWayland.cpp.mozilla-1627469 firefox-74.0.1/widget/gtk/WindowSurfaceWayland.cpp ---- firefox-74.0.1/widget/gtk/WindowSurfaceWayland.cpp.mozilla-1627469 2020-04-06 15:07:16.772431937 +0200 -+++ firefox-74.0.1/widget/gtk/WindowSurfaceWayland.cpp 2020-04-06 15:09:57.037320477 +0200 -@@ -647,13 +647,14 @@ WindowBackBuffer* WindowSurfaceWayland:: - LOGWAYLAND( - ("WindowSurfaceWayland::NewWaylandBuffer [%p] Requested buffer [%d " - "x %d] DMABuf %d\n", -- (void*)this, mWidgetRect.width, mWidgetRect.height, aUseDMABufBackend)); -+ (void*)this, mWLBufferRect.width, mWLBufferRect.height, -+ aUseDMABufBackend)); - - mWaylandBuffer = WaylandBufferFindAvailable( -- mWidgetRect.width, mWidgetRect.height, aUseDMABufBackend); -+ mWLBufferRect.width, mWLBufferRect.height, aUseDMABufBackend); - if (!mWaylandBuffer) { -- mWaylandBuffer = CreateWaylandBuffer(mWidgetRect.width, mWidgetRect.height, -- aUseDMABufBackend); -+ mWaylandBuffer = CreateWaylandBuffer( -+ mWLBufferRect.width, mWLBufferRect.height, aUseDMABufBackend); - } - - return mWaylandBuffer; -@@ -663,7 +664,7 @@ WindowBackBuffer* WindowSurfaceWayland:: - LOGWAYLAND( - ("WindowSurfaceWayland::GetWaylandBufferRecent [%p] Requested buffer [%d " - "x %d]\n", -- (void*)this, mWidgetRect.width, mWidgetRect.height)); -+ (void*)this, mWLBufferRect.width, mWLBufferRect.height)); - - // There's no buffer created yet, create a new one for partial screen updates. - if (!mWaylandBuffer) { -@@ -675,9 +676,10 @@ WindowBackBuffer* WindowSurfaceWayland:: - return nullptr; - } - -- if (mWaylandBuffer->IsMatchingSize(mWidgetRect.width, mWidgetRect.height)) { -- LOGWAYLAND((" Size is ok, use the buffer [%d x %d]\n", mWidgetRect.width, -- mWidgetRect.height)); -+ if (mWaylandBuffer->IsMatchingSize(mWLBufferRect.width, -+ mWLBufferRect.height)) { -+ LOGWAYLAND((" Size is ok, use the buffer [%d x %d]\n", -+ mWLBufferRect.width, mWLBufferRect.height)); - return mWaylandBuffer; - } - -@@ -692,7 +694,7 @@ WindowBackBuffer* WindowSurfaceWayland:: - LOGWAYLAND( - ("WindowSurfaceWayland::GetWaylandBufferWithSwitch [%p] Requested buffer " - "[%d x %d]\n", -- (void*)this, mWidgetRect.width, mWidgetRect.height)); -+ (void*)this, mWLBufferRect.width, mWLBufferRect.height)); - - // There's no buffer created yet or actual buffer is attached, get a new one. - // Use DMABuf for fullscreen updates only. -@@ -701,20 +703,21 @@ WindowBackBuffer* WindowSurfaceWayland:: - } - - // Reuse existing buffer -- LOGWAYLAND((" Reuse buffer with resize [%d x %d]\n", mWidgetRect.width, -- mWidgetRect.height)); -+ LOGWAYLAND((" Reuse buffer with resize [%d x %d]\n", mWLBufferRect.width, -+ mWLBufferRect.height)); - - // OOM here, just return null to skip this frame. -- if (!mWaylandBuffer->Resize(mWidgetRect.width, mWidgetRect.height)) { -+ if (!mWaylandBuffer->Resize(mWLBufferRect.width, mWLBufferRect.height)) { - return nullptr; - } - return mWaylandBuffer; - } - - already_AddRefed WindowSurfaceWayland::LockWaylandBuffer() { -- // Allocated wayland buffer must match widget size, otherwise wayland -- // compositor is confused and may produce various rendering artifacts. -- mWidgetRect = mWindow->GetMozContainerSize(); -+ // Allocated wayland buffer can't be bigger than mozilla widget size. -+ LayoutDeviceIntRegion region; -+ region.And(mLockedScreenRect, mWindow->GetMozContainerSize()); -+ mWLBufferRect = LayoutDeviceIntRect(region.GetBounds()); - - // mCanSwitchWaylandBuffer set means we're getting buffer for fullscreen - // update. We can use DMABuf and we can get a new buffer for drawing. -@@ -882,8 +885,8 @@ already_AddRefed Window - LayoutDeviceIntRect size = mWindow->GetMozContainerSize(); - - // We can draw directly only when widget has the same size as wl_buffer -- mDrawToWaylandBufferDirectly = (size.width == mLockedScreenRect.width && -- size.height == mLockedScreenRect.height); -+ mDrawToWaylandBufferDirectly = (size.width >= mLockedScreenRect.width && -+ size.height >= mLockedScreenRect.height); - - // We can draw directly only when we redraw significant part of the window - // to avoid flickering. -diff -up firefox-74.0.1/widget/gtk/WindowSurfaceWayland.h.mozilla-1627469 firefox-74.0.1/widget/gtk/WindowSurfaceWayland.h ---- firefox-74.0.1/widget/gtk/WindowSurfaceWayland.h.mozilla-1627469 2020-04-06 15:07:16.773431931 +0200 -+++ firefox-74.0.1/widget/gtk/WindowSurfaceWayland.h 2020-04-06 15:07:16.775431919 +0200 -@@ -264,11 +264,11 @@ class WindowSurfaceWayland : public Wind - // mLockedScreenRect is window size when our wayland buffer was allocated. - LayoutDeviceIntRect mLockedScreenRect; - -- // WidgetRect is an actual size of mozcontainer widget. It can be -- // different than mLockedScreenRect during resize when mBounds are updated -- // immediately but actual GtkWidget size is updated asynchronously -- // (see Bug 1489463). -- LayoutDeviceIntRect mWidgetRect; -+ // mWLBufferRect is an intersection of mozcontainer widgetsize and -+ // mLockedScreenRect size. It can be different than mLockedScreenRect -+ // during resize when mBounds are updated immediately but actual -+ // GtkWidget size is updated asynchronously (see Bug 1489463). -+ LayoutDeviceIntRect mWLBufferRect; - nsWaylandDisplay* mWaylandDisplay; - - // Actual buffer (backed by wl_buffer) where all drawings go into. diff --git a/sources b/sources index 10d5bfe..232cbcc 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ SHA512 (cbindgen-vendor.tar.xz) = a12d9dd45301614f3a7fcd77f61e3f731718fc418fcf84b0ac7363ef4ddd8ff60e057febef917620ac89d2d47d76b8dccfa71405935e346b849b93425732016a -SHA512 (firefox-75.0.source.tar.xz) = 29c9e3455251ab5f5a3e8f2d0ad6f8b43f710d15605bf169fd5cd7ade3555da6b2df66ec26af5624c0f4bb46d5e7e3527351f648fee79f5defcb926fa6ae382a -SHA512 (firefox-langpacks-75.0-20200406.tar.xz) = 6e505784bee25dc2588443665a948ab1c1748b5a62a4549d61b02bdb17c0f3048083edda2c95bbf3055816c3d249d8db7fa12edfcfef9f623d12eaee1d089965 +SHA512 (firefox-76.0.source.tar.xz) = 1f023861aaed0468f62135d3ef1098f599111df4e8f231e19baaa54e4bad0e3ddf8575895467ffc9f72bd91a2f6ed5b55096fe4932685e4bb58871e004c184db +SHA512 (firefox-langpacks-76.0-20200502.tar.xz) = 6038d383d9b6aca7fe7fffc39f47055f956ab9dd3e9b4aff67f5297330f7b051fb4c08491242ff42c864e254fa67cfd9a107753ca4e002fd20eb22dd37b12bf0