diff --git a/wxGTK-2.8.10-wxTimer-fix.patch b/wxGTK-2.8.10-wxTimer-fix.patch new file mode 100644 index 0000000..e7059ca --- /dev/null +++ b/wxGTK-2.8.10-wxTimer-fix.patch @@ -0,0 +1,39 @@ +Index: src/gtk/app.cpp +=================================================================== +--- src/gtk/app.cpp (revision 62396) ++++ src/gtk/app.cpp (revision 62397) +@@ -149,9 +149,11 @@ + // One-shot emission hook for "event" signal, to install idle handler. + // This will be called when the "event" signal is issued on any GtkWidget object. + static gboolean +-event_emission_hook(GSignalInvocationHint*, guint, const GValue*, gpointer) ++event_emission_hook(GSignalInvocationHint*, guint, const GValue*, gpointer data) + { + wxapp_install_idle_handler(); ++ bool* hook_installed = (bool*)data; ++ *hook_installed = false; + // remove hook + return false; + } +@@ -159,12 +161,17 @@ + // add emission hook for "event" signal, to re-install idle handler when needed + static inline void wxAddEmissionHook() + { ++ static bool hook_installed; + GType widgetType = GTK_TYPE_WIDGET; +- // if GtkWidget type is loaded +- if (g_type_class_peek(widgetType) != NULL) ++ // if hook not installed and GtkWidget type is loaded ++ if (!hook_installed && g_type_class_peek(widgetType)) + { +- guint sig_id = g_signal_lookup("event", widgetType); +- g_signal_add_emission_hook(sig_id, 0, event_emission_hook, NULL, NULL); ++ static guint sig_id; ++ if (sig_id == 0) ++ sig_id = g_signal_lookup("event", widgetType); ++ hook_installed = true; ++ g_signal_add_emission_hook( ++ sig_id, 0, event_emission_hook, &hook_installed, NULL); + } + } + diff --git a/wxGTK.spec b/wxGTK.spec index 41b164f..02e69c1 100644 --- a/wxGTK.spec +++ b/wxGTK.spec @@ -4,7 +4,7 @@ Name: wxGTK Version: 2.8.10 -Release: 4%{?dist} +Release: 5%{?dist} Summary: GTK2 port of the wxWidgets GUI library # The wxWindows licence is the LGPL with a specific exemption allowing # distribution of derived binaries under any terms. (This will eventually @@ -18,6 +18,8 @@ Source0: http://dl.sf.net/wxwindows/%{name}-%{version}.tar.bz2 Patch0: %{name}-2.8.10-gsocket.patch # http://trac.wxwidgets.org/ticket/10993 Patch1: %{name}-2.8.10-CVE-2009-2369.patch +# http://trac.wxwidgets.org/ticket/11315 +Patch2: %{name}-2.8.10-wxTimer-fix.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) @@ -101,6 +103,7 @@ libraries or the X Window System. %setup -q -n %{name}-%{version} %patch0 -p1 -b .gsocket %patch1 -p0 -b .CVE-2009-2369 +%patch2 -p0 -b .wxTimer-fix sed -i -e 's|/usr/lib\b|%{_libdir}|' wx-config.in configure @@ -257,6 +260,9 @@ rm -rf $RPM_BUILD_ROOT %changelog +* Fri Oct 16 2009 Dan HorĂ¡k - 2.8.10-5 +- add fix for excessive CPU usage (#494425) + * Mon Jul 27 2009 Fedora Release Engineering - 2.8.10-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild