diff options
-rw-r--r-- | firefox.spec | 10 | ||||
-rw-r--r-- | mozilla-1631061.patch | 158 |
2 files changed, 8 insertions, 160 deletions
diff --git a/firefox.spec b/firefox.spec index 7bbb235..6e13020 100644 --- a/firefox.spec +++ b/firefox.spec @@ -152,7 +152,7 @@ ExcludeArch: s390x Summary: Mozilla Firefox Web browser Name: firefox Version: 85.0 -Release: 6%{?pre_tag}%{?dist} +Release: 7%{?pre_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 @@ -225,12 +225,13 @@ Patch407: mozilla-1667096.patch Patch408: mozilla-1663844.patch Patch415: mozilla-1670333.patch Patch418: mozilla-1556931-s390x-hidden-syms.patch -Patch422: mozilla-1631061.patch Patch423: mozilla-1681107.patch Patch424: firefox-wayland-fix-mzbz-1642949-regression.patch Patch426: mozilla-1687931.patch Patch427: mozilla-1678247.patch Patch428: mozilla-1679933.patch +Patch429: mozilla-1631061-1.patch +Patch430: mozilla-1631061-2.patch # PGO/LTO patches Patch600: pgo.patch @@ -442,6 +443,8 @@ This package contains results of tests executed during build. %patch426 -p1 -b .1687931 %patch427 -p1 -b .1678247 %patch428 -p1 -b .1679933 +%patch429 -p1 -b .1631061 +%patch430 -p1 -b .1631061 # PGO patches %if %{build_with_pgo} @@ -1010,6 +1013,9 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : #--------------------------------------------------------------------- %changelog +* Fri Jan 29 2021 Martin Stransky <stransky@redhat.com> - 85.0-7 +- Added clipboard fix mozbz#1631061. + * Thu Jan 28 2021 Kalev Lember <klember@redhat.com> - 85.0-6 - Make provides/requires filtering smarter/automatic (rhbz#1582116) - Drop dbus-glib requires that are now automatically generated again diff --git a/mozilla-1631061.patch b/mozilla-1631061.patch deleted file mode 100644 index acd1c5a..0000000 --- a/mozilla-1631061.patch +++ /dev/null @@ -1,158 +0,0 @@ -changeset: 563258:ed4b271af277 -tag: tip -parent: 563255:2c9db4cd3d89 -user: stransky <stransky@redhat.com> -date: Tue Dec 22 11:03:28 2020 +0100 -files: widget/gtk/nsClipboardWayland.cpp widget/gtk/nsClipboardWayland.h -description: -Bug 1631061 [Wayland] Remove fast track clipboard and always ask compositor for clipboard data, r?rmader - -Differential Revision: https://phabricator.services.mozilla.com/D100317 - - -diff --git a/widget/gtk/nsClipboardWayland.cpp b/widget/gtk/nsClipboardWayland.cpp ---- a/widget/gtk/nsClipboardWayland.cpp -+++ b/widget/gtk/nsClipboardWayland.cpp -@@ -749,7 +749,6 @@ nsRetrievalContextWayland::nsRetrievalCo - mClipboardOffer(nullptr), - mPrimaryOffer(nullptr), - mDragContext(nullptr), -- mClipboardRequestNumber(0), - mClipboardData(nullptr), - mClipboardDataLength(0) { - wl_data_device* dataDevice = wl_data_device_manager_get_data_device( -@@ -807,42 +806,6 @@ GdkAtom* nsRetrievalContextWayland::GetT - return nullptr; - } - --struct FastTrackClipboard { -- FastTrackClipboard(int aClipboardRequestNumber, -- nsRetrievalContextWayland* aRetrievalContex) -- : mClipboardRequestNumber(aClipboardRequestNumber), -- mRetrievalContex(aRetrievalContex) {} -- -- int mClipboardRequestNumber; -- nsRetrievalContextWayland* mRetrievalContex; --}; -- --static void wayland_clipboard_contents_received( -- GtkClipboard* clipboard, GtkSelectionData* selection_data, gpointer data) { -- LOGCLIP(("wayland_clipboard_contents_received() callback\n")); -- FastTrackClipboard* fastTrack = static_cast<FastTrackClipboard*>(data); -- fastTrack->mRetrievalContex->TransferFastTrackClipboard( -- fastTrack->mClipboardRequestNumber, selection_data); -- delete fastTrack; --} -- --void nsRetrievalContextWayland::TransferFastTrackClipboard( -- int aClipboardRequestNumber, GtkSelectionData* aSelectionData) { -- if (mClipboardRequestNumber == aClipboardRequestNumber) { -- int dataLength = gtk_selection_data_get_length(aSelectionData); -- if (dataLength > 0) { -- mClipboardDataLength = dataLength; -- mClipboardData = reinterpret_cast<char*>( -- g_malloc(sizeof(char) * (mClipboardDataLength + 1))); -- memcpy(mClipboardData, gtk_selection_data_get_data(aSelectionData), -- sizeof(char) * mClipboardDataLength); -- mClipboardData[mClipboardDataLength] = '\0'; -- } -- } else { -- NS_WARNING("Received obsoleted clipboard data!"); -- } --} -- - const char* nsRetrievalContextWayland::GetClipboardData( - const char* aMimeType, int32_t aWhichClipboard, uint32_t* aContentLength) { - NS_ASSERTION(mClipboardData == nullptr && mClipboardDataLength == 0, -@@ -851,33 +814,20 @@ const char* nsRetrievalContextWayland::G - LOGCLIP(("nsRetrievalContextWayland::GetClipboardData [%p] mime %s\n", this, - aMimeType)); - -- /* If actual clipboard data is owned by us we don't need to go -- * through Wayland but we ask Gtk+ to directly call data -- * getter callback nsClipboard::SelectionGetEvent(). -- * see gtk_selection_convert() at gtk+/gtkselection.c. -- */ -- GdkAtom selection = GetSelectionAtom(aWhichClipboard); -- if (gdk_selection_owner_get(selection)) { -- LOGCLIP((" Internal clipboard content\n")); -- mClipboardRequestNumber++; -- gtk_clipboard_request_contents( -- gtk_clipboard_get(selection), gdk_atom_intern(aMimeType, FALSE), -- wayland_clipboard_contents_received, -- new FastTrackClipboard(mClipboardRequestNumber, this)); -+ const auto& dataOffer = -+ (GetSelectionAtom(aWhichClipboard) == GDK_SELECTION_PRIMARY) -+ ? mPrimaryOffer -+ : mClipboardOffer; -+ if (!dataOffer) { -+ // Something went wrong. We're requested to provide clipboard data -+ // but we haven't got any from wayland. -+ NS_WARNING("Requested data without valid DataOffer!"); -+ if (mClipboardData) { -+ ReleaseClipboardData(mClipboardData); -+ } - } else { -- LOGCLIP((" Remote clipboard content\n")); -- const auto& dataOffer = -- (selection == GDK_SELECTION_PRIMARY) ? mPrimaryOffer : mClipboardOffer; -- if (!dataOffer) { -- // Something went wrong. We're requested to provide clipboard data -- // but we haven't got any from wayland. -- NS_WARNING("Requested data without valid DataOffer!"); -- mClipboardData = nullptr; -- mClipboardDataLength = 0; -- } else { -- mClipboardData = dataOffer->GetData(mDisplay->GetDisplay(), aMimeType, -- &mClipboardDataLength); -- } -+ mClipboardData = dataOffer->GetData(mDisplay->GetDisplay(), aMimeType, -+ &mClipboardDataLength); - } - - *aContentLength = mClipboardDataLength; -@@ -908,8 +858,10 @@ void nsRetrievalContextWayland::ReleaseC - - NS_ASSERTION(aClipboardData == mClipboardData, - "Releasing unknown clipboard data!"); -- g_free((void*)aClipboardData); - -- mClipboardData = nullptr; -- mClipboardDataLength = 0; -+ if (mClipboardData) { -+ g_free((void*)aClipboardData); -+ mClipboardData = nullptr; -+ mClipboardDataLength = 0; -+ } - } -diff --git a/widget/gtk/nsClipboardWayland.h b/widget/gtk/nsClipboardWayland.h ---- a/widget/gtk/nsClipboardWayland.h -+++ b/widget/gtk/nsClipboardWayland.h -@@ -16,8 +16,6 @@ - #include "nsClipboard.h" - #include "nsWaylandDisplay.h" - --struct FastTrackClipboard; -- - class DataOffer { - public: - void AddMIMEType(const char* aMimeType); -@@ -134,9 +132,6 @@ class nsRetrievalContextWayland : public - - void ClearDragAndDropDataOffer(); - -- void TransferFastTrackClipboard(int aClipboardRequestNumber, -- GtkSelectionData* aSelectionData); -- - virtual ~nsRetrievalContextWayland() override; - - private: -@@ -149,7 +144,6 @@ class nsRetrievalContextWayland : public - mozilla::UniquePtr<DataOffer> mPrimaryOffer; - RefPtr<nsWaylandDragContext> mDragContext; - -- int mClipboardRequestNumber; - char* mClipboardData; - uint32_t mClipboardDataLength; - - |