Added fix for mozbz#1097592 - Firefox freeze in Gtk3

This commit is contained in:
Martin Stransky 2014-12-12 11:18:14 +01:00
parent 7a6142b695
commit 02e8ef68f3
2 changed files with 62 additions and 1 deletions

View File

@ -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)

56
mozilla-1097592.patch Normal file
View File

@ -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