summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--firefox.spec7
-rw-r--r--mozilla-1097592.patch56
2 files changed, 62 insertions, 1 deletions
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 <stransky@redhat.com> - 34.0-7
+- Added fix for mozbz#1097592 - Firefox freeze in Gtk3
+
* Thu Dec 11 2014 Martin Stransky <stransky@redhat.com> - 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 <stransky@redhat.com>
+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", &gtkLibrary);
+- 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
+
bgstack15