From 02e8ef68f3427369c61ab54f95f54a50db8db930 Mon Sep 17 00:00:00 2001 From: Martin Stransky Date: Fri, 12 Dec 2014 11:18:14 +0100 Subject: Added fix for mozbz#1097592 - Firefox freeze in Gtk3 --- firefox.spec | 7 ++++++- mozilla-1097592.patch | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 mozilla-1097592.patch diff --git a/firefox.spec b/firefox.spec index f4cadf8..cf90c18 100644 --- a/firefox.spec +++ b/firefox.spec @@ -113,7 +113,7 @@ Summary: Mozilla Firefox Web browser Name: firefox Version: 34.0 -Release: 6%{?pre_tag}%{?dist} +Release: 7%{?pre_tag}%{?dist} URL: http://www.mozilla.org/projects/firefox/ License: MPLv1.1 or GPLv2+ or LGPLv2+ Group: Applications/Internet @@ -157,6 +157,7 @@ Patch403: mozilla-1051209.patch Patch404: mozilla-1101582.patch Patch405: mozilla-1073117-check.patch Patch406: mozilla-1073117-color.patch +Patch407: mozilla-1097592.patch %if %{official_branding} # Required by Mozilla Corporation @@ -310,6 +311,7 @@ cd %{tarballdir} %patch404 -p1 -b .1101582 %patch405 -p1 -b .1073117-check %patch406 -p1 -b .1073117-color +%patch407 -p1 -b .1097592 %endif %if %{official_branding} @@ -773,6 +775,9 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : #--------------------------------------------------------------------- %changelog +* Fri Dec 12 2014 Martin Stransky - 34.0-7 +- Added fix for mozbz#1097592 - Firefox freeze in Gtk3 + * Thu Dec 11 2014 Martin Stransky - 34.0-6 - Disabled Gtk3 on Fedora 21 and earlier (rhbz#1172926) diff --git a/mozilla-1097592.patch b/mozilla-1097592.patch new file mode 100644 index 0000000..5e1139a --- /dev/null +++ b/mozilla-1097592.patch @@ -0,0 +1,56 @@ +# HG changeset patch +# Parent 64206634959a2e84eefec40d1da0122c7a63bc20 +# User Martin Stransky +Bug 1097592 - Don't use PR_FindFunctionSymbolAndLibrary to avoid app freeze, r=?karlt + +diff --git a/widget/gtk/mozgtk/mozgtk.c b/widget/gtk/mozgtk/mozgtk.c +--- a/widget/gtk/mozgtk/mozgtk.c ++++ b/widget/gtk/mozgtk/mozgtk.c +@@ -116,16 +116,17 @@ STUB(gdk_x11_display_get_user_time) + STUB(gdk_x11_display_get_xdisplay) + STUB(gdk_x11_get_default_root_xwindow) + STUB(gdk_x11_get_default_xdisplay) + STUB(gdk_x11_get_xatom_by_name) + STUB(gdk_x11_lookup_xdisplay) + STUB(gdk_x11_screen_get_xscreen) + STUB(gdk_x11_visual_get_xvisual) + STUB(gdk_x11_window_lookup_for_display) ++STUB(gdk_x11_window_set_user_time) + STUB(gdk_x11_xatom_to_atom) + STUB(gtk_accel_label_new) + STUB(gtk_alignment_get_type) + STUB(gtk_alignment_new) + STUB(gtk_alignment_set_padding) + STUB(gtk_arrow_get_type) + STUB(gtk_arrow_new) + STUB(gtk_bindings_activate) +diff --git a/widget/gtk/nsWindow.cpp b/widget/gtk/nsWindow.cpp +--- a/widget/gtk/nsWindow.cpp ++++ b/widget/gtk/nsWindow.cpp +@@ -1290,24 +1290,18 @@ SetUserTimeAndStartupIDForActivatedWindo + sn_launchee_context_new(snd, gdk_screen_get_number(screen), + desktopStartupID.get()); + if (!ctx) { + sn_display_unref(snd); + return; + } + + if (sn_launchee_context_get_id_has_timestamp(ctx)) { +- PRLibrary* gtkLibrary; +- SetUserTimeFunc setUserTimeFunc = (SetUserTimeFunc) +- PR_FindFunctionSymbolAndLibrary("gdk_x11_window_set_user_time", >kLibrary); +- if (setUserTimeFunc) { +- setUserTimeFunc(gdkWindow, sn_launchee_context_get_timestamp(ctx)); +- PR_UnloadLibrary(gtkLibrary); +- } +- } ++ gdk_x11_window_set_user_time(gdkWindow, sn_launchee_context_get_timestamp(ctx)); ++ } + + sn_launchee_context_setup_window(ctx, gdk_x11_window_get_xid(gdkWindow)); + sn_launchee_context_complete(ctx); + + sn_launchee_context_unref(ctx); + sn_display_unref(snd); + #endif + -- cgit