- add fix for excessive CPU usage (#494425)

This commit is contained in:
Dan Horák 2009-10-16 10:14:16 +00:00
parent 234ad8b6cd
commit 1786169172
2 changed files with 46 additions and 1 deletions

View File

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

View File

@ -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 <dan[at]danny.cz> - 2.8.10-5
- add fix for excessive CPU usage (#494425)
* Mon Jul 27 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.8.10-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild