[glib] GApplication: don't create a mainloop
- From: Ryan Lortie <ryanl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib] GApplication: don't create a mainloop
- Date: Wed, 14 Sep 2011 18:09:41 +0000 (UTC)
commit 43007aa2d2f0d1fe3e63f7c61abb927dccaf799b
Author: Ryan Lortie <desrt desrt ca>
Date: Tue Sep 13 21:57:30 2011 -0400
GApplication: don't create a mainloop
Just iterate the main context directly. Also: avoid calling the virtual
functions for mainloops.
https://bugzilla.gnome.org/show_bug.cgi?id=658805
gio/gapplication.c | 45 ++++++---------------------------------------
1 files changed, 6 insertions(+), 39 deletions(-)
---
diff --git a/gio/gapplication.c b/gio/gapplication.c
index ebcd3c2..e2603c0 100644
--- a/gio/gapplication.c
+++ b/gio/gapplication.c
@@ -149,7 +149,6 @@ struct _GApplicationPrivate
gchar *id;
GActionGroup *actions;
- GMainLoop *mainloop;
guint inactivity_timeout_id;
guint inactivity_timeout;
@@ -364,22 +363,6 @@ g_application_real_add_platform_data (GApplication *application,
{
}
-static void
-g_application_real_quit_mainloop (GApplication *application)
-{
- if (application->priv->mainloop != NULL)
- g_main_loop_quit (application->priv->mainloop);
-}
-
-static void
-g_application_real_run_mainloop (GApplication *application)
-{
- if (application->priv->mainloop == NULL)
- application->priv->mainloop = g_main_loop_new (NULL, FALSE);
-
- g_main_loop_run (application->priv->mainloop);
-}
-
/* GObject implementation stuff {{{1 */
static void
g_application_set_property (GObject *object,
@@ -502,9 +485,6 @@ g_application_finalize (GObject *object)
g_application_impl_destroy (application->priv->impl);
g_free (application->priv->id);
- if (application->priv->mainloop)
- g_main_loop_unref (application->priv->mainloop);
-
G_OBJECT_CLASS (g_application_parent_class)
->finalize (object);
}
@@ -536,8 +516,6 @@ g_application_class_init (GApplicationClass *class)
class->command_line = g_application_real_command_line;
class->local_command_line = g_application_real_local_command_line;
class->add_platform_data = g_application_real_add_platform_data;
- class->quit_mainloop = g_application_real_quit_mainloop;
- class->run_mainloop = g_application_real_run_mainloop;
g_object_class_install_property (object_class, PROP_APPLICATION_ID,
g_param_spec_string ("application-id",
@@ -1088,8 +1066,7 @@ inactivity_timeout_expired (gpointer data)
{
GApplication *application = G_APPLICATION (data);
- G_APPLICATION_GET_CLASS (application)
- ->quit_mainloop (application);
+ application->priv->inactivity_timeout_id = 0;
return FALSE;
}
@@ -1111,17 +1088,9 @@ g_application_release (GApplication *application)
{
application->priv->use_count--;
- if (application->priv->use_count == 0)
- {
- if (application->priv->inactivity_timeout)
- application->priv->inactivity_timeout_id =
- g_timeout_add (application->priv->inactivity_timeout,
- inactivity_timeout_expired, application);
-
- else
- G_APPLICATION_GET_CLASS (application)
- ->quit_mainloop (application);
- }
+ if (application->priv->use_count == 0 && application->priv->inactivity_timeout)
+ application->priv->inactivity_timeout_id = g_timeout_add (application->priv->inactivity_timeout,
+ inactivity_timeout_expired, application);
}
/* Activate, Open {{{1 */
@@ -1346,11 +1315,9 @@ g_application_run (GApplication *application,
g_timeout_add (10000, inactivity_timeout_expired, application);
}
- if (application->priv->use_count ||
- application->priv->inactivity_timeout_id)
+ while (application->priv->use_count || application->priv->inactivity_timeout_id)
{
- G_APPLICATION_GET_CLASS (application)
- ->run_mainloop (application);
+ g_main_context_iteration (NULL, TRUE);
status = 0;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]