Updated to 76.0
This commit is contained in:
parent
cdfebbc9a2
commit
b178223177
|
@ -393,3 +393,5 @@ firefox-3.6.4.source.tar.bz2
|
||||||
/firefox-langpacks-74.0.1-20200404.tar.xz
|
/firefox-langpacks-74.0.1-20200404.tar.xz
|
||||||
/firefox-75.0.source.tar.xz
|
/firefox-75.0.source.tar.xz
|
||||||
/firefox-langpacks-75.0-20200406.tar.xz
|
/firefox-langpacks-75.0-20200406.tar.xz
|
||||||
|
/firefox-76.0.source.tar.xz
|
||||||
|
/firefox-langpacks-76.0-20200502.tar.xz
|
||||||
|
|
|
@ -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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
diff -up firefox-75.0/old-configure.in.nss-version firefox-75.0/old-configure.in
|
diff -up firefox-76.0/old-configure.in.nss-version firefox-76.0/old-configure.in
|
||||||
--- firefox-75.0/old-configure.in.nss-version 2020-04-07 07:59:28.091106813 +0200
|
--- firefox-76.0/old-configure.in.nss-version 2020-05-03 19:12:01.771863688 +0200
|
||||||
+++ firefox-75.0/old-configure.in 2020-04-07 08:00:30.272678298 +0200
|
+++ firefox-76.0/old-configure.in 2020-05-03 19:17:53.216898766 +0200
|
||||||
@@ -1504,7 +1504,7 @@ MOZ_ARG_WITH_BOOL(system-nss,
|
@@ -1506,7 +1506,7 @@ MOZ_ARG_WITH_BOOL(system-nss,
|
||||||
_USE_SYSTEM_NSS=1 )
|
_USE_SYSTEM_NSS=1 )
|
||||||
|
|
||||||
if test -n "$_USE_SYSTEM_NSS"; then
|
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.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.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, [MOZ_SYSTEM_NSS=1], [AC_MSG_ERROR([you don't have NSS installed or your version is too old])])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
NSS_CFLAGS="$NSS_CFLAGS -I${DIST}/include/nss"
|
NSS_CFLAGS="$NSS_CFLAGS -I${DIST}/include/nss"
|
||||||
|
|
21
firefox.spec
21
firefox.spec
|
@ -117,13 +117,13 @@ ExcludeArch: s390x
|
||||||
|
|
||||||
Summary: Mozilla Firefox Web browser
|
Summary: Mozilla Firefox Web browser
|
||||||
Name: firefox
|
Name: firefox
|
||||||
Version: 75.0
|
Version: 76.0
|
||||||
Release: 3%{?nss_tag}%{?dist}
|
Release: 1%{?nss_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}-20200406.tar.xz
|
Source1: firefox-langpacks-%{version}%{?pre_version}-20200502.tar.xz
|
||||||
%endif
|
%endif
|
||||||
Source2: cbindgen-vendor.tar.xz
|
Source2: cbindgen-vendor.tar.xz
|
||||||
Source10: firefox-mozconfig
|
Source10: firefox-mozconfig
|
||||||
|
@ -183,13 +183,9 @@ Patch412: mozilla-1337988.patch
|
||||||
Patch415: Bug-1238661---fix-mozillaSignalTrampoline-to-work-.patch
|
Patch415: Bug-1238661---fix-mozillaSignalTrampoline-to-work-.patch
|
||||||
Patch417: bug1375074-save-restore-x28.patch
|
Patch417: bug1375074-save-restore-x28.patch
|
||||||
Patch422: mozilla-1580174-webrtc-popup.patch
|
Patch422: mozilla-1580174-webrtc-popup.patch
|
||||||
Patch425: mozilla-1623106.patch
|
|
||||||
|
|
||||||
# Wayland specific upstream patches
|
# Wayland specific upstream patches
|
||||||
Patch574: firefox-pipewire.patch
|
Patch574: firefox-pipewire.patch
|
||||||
Patch576: mozilla-1623060.patch
|
|
||||||
Patch578: mozilla-1627469.patch
|
|
||||||
Patch579: browser-tabbar-dad-mzbz1527976.patch
|
|
||||||
|
|
||||||
# PGO/LTO patches
|
# PGO/LTO patches
|
||||||
Patch600: pgo.patch
|
Patch600: pgo.patch
|
||||||
|
@ -388,8 +384,6 @@ This package contains results of tests executed during build.
|
||||||
#%patch241 -p1 -b .kiosk-workaround
|
#%patch241 -p1 -b .kiosk-workaround
|
||||||
%patch242 -p1 -b .gnome-shell-search-fixes
|
%patch242 -p1 -b .gnome-shell-search-fixes
|
||||||
|
|
||||||
%patch425 -p1 -b .1623106
|
|
||||||
|
|
||||||
%patch402 -p1 -b .1196777
|
%patch402 -p1 -b .1196777
|
||||||
%ifarch %{arm}
|
%ifarch %{arm}
|
||||||
%patch415 -p1 -b .1238661
|
%patch415 -p1 -b .1238661
|
||||||
|
@ -397,13 +391,11 @@ This package contains results of tests executed during build.
|
||||||
|
|
||||||
# Wayland specific upstream patches
|
# Wayland specific upstream patches
|
||||||
%patch574 -p1 -b .firefox-pipewire
|
%patch574 -p1 -b .firefox-pipewire
|
||||||
%patch576 -p1 -b .mozilla-1623060
|
|
||||||
%patch578 -p1 -b .mozilla-1627469
|
|
||||||
%patch579 -p1 -b .mozilla-1527976
|
|
||||||
|
|
||||||
# PGO patches
|
# PGO patches
|
||||||
%patch600 -p1 -b .pgo
|
%patch600 -p1 -b .pgo
|
||||||
%patch601 -p1 -b .1516081
|
#fix
|
||||||
|
#%patch601 -p1 -b .1516081
|
||||||
%patch602 -p1 -b .1516803
|
%patch602 -p1 -b .1516803
|
||||||
|
|
||||||
%{__rm} -f .mozconfig
|
%{__rm} -f .mozconfig
|
||||||
|
@ -966,6 +958,9 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
|
||||||
#---------------------------------------------------------------------
|
#---------------------------------------------------------------------
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Sun May 3 2020 Martin Stransky <stransky@redhat.com> - 76.0-1
|
||||||
|
- Updated to 76.0
|
||||||
|
|
||||||
* Thu Apr 23 2020 Martin Stransky <stransky@redhat.com> - 75.0-3
|
* Thu Apr 23 2020 Martin Stransky <stransky@redhat.com> - 75.0-3
|
||||||
- Added fix for mozilla bug #1527976 (browser D&D)
|
- Added fix for mozilla bug #1527976 (browser D&D)
|
||||||
|
|
||||||
|
|
|
@ -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<RenderingCacheMode>(
|
|
||||||
- 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<gfx::DrawTarget> 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<gfx::DrawTarget> 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<gfx::DrawTarget> 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<gfx::DrawTarget> 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;
|
|
|
@ -1,73 +0,0 @@
|
||||||
changeset: 521156:e856a981e2be
|
|
||||||
tag: tip
|
|
||||||
parent: 521144:5bfecf5aff6d
|
|
||||||
user: Martin Stransky <stransky@redhat.com>
|
|
||||||
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<GdkWindowState>(
|
|
||||||
- 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<GdkWindowState>(
|
|
||||||
- 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<GdkWindowState>(
|
|
||||||
+ 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<GdkWindowState>(
|
|
||||||
+ 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.
|
|
||||||
|
|
|
@ -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<gfx::DrawTarget> 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<gfx::DrawTarget> 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.
|
|
4
sources
4
sources
|
@ -1,3 +1,3 @@
|
||||||
SHA512 (cbindgen-vendor.tar.xz) = a12d9dd45301614f3a7fcd77f61e3f731718fc418fcf84b0ac7363ef4ddd8ff60e057febef917620ac89d2d47d76b8dccfa71405935e346b849b93425732016a
|
SHA512 (cbindgen-vendor.tar.xz) = a12d9dd45301614f3a7fcd77f61e3f731718fc418fcf84b0ac7363ef4ddd8ff60e057febef917620ac89d2d47d76b8dccfa71405935e346b849b93425732016a
|
||||||
SHA512 (firefox-75.0.source.tar.xz) = 29c9e3455251ab5f5a3e8f2d0ad6f8b43f710d15605bf169fd5cd7ade3555da6b2df66ec26af5624c0f4bb46d5e7e3527351f648fee79f5defcb926fa6ae382a
|
SHA512 (firefox-76.0.source.tar.xz) = 1f023861aaed0468f62135d3ef1098f599111df4e8f231e19baaa54e4bad0e3ddf8575895467ffc9f72bd91a2f6ed5b55096fe4932685e4bb58871e004c184db
|
||||||
SHA512 (firefox-langpacks-75.0-20200406.tar.xz) = 6e505784bee25dc2588443665a948ab1c1748b5a62a4549d61b02bdb17c0f3048083edda2c95bbf3055816c3d249d8db7fa12edfcfef9f623d12eaee1d089965
|
SHA512 (firefox-langpacks-76.0-20200502.tar.xz) = 6038d383d9b6aca7fe7fffc39f47055f956ab9dd3e9b4aff67f5297330f7b051fb4c08491242ff42c864e254fa67cfd9a107753ca4e002fd20eb22dd37b12bf0
|
||||||
|
|
Loading…
Reference in New Issue