mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-01-26 05:56:14 +01:00
gmenumodel test: If something goes wrong, don't wait forever
I'm about to add some loops that would otherwise wait indefinitely. Signed-off-by: Simon McVittie <smcv@collabora.com> Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=884661 https://bugzilla.gnome.org/show_bug.cgi?id=791744
This commit is contained in:
parent
95e2800591
commit
ea159a9e1a
@ -5,6 +5,33 @@
|
|||||||
|
|
||||||
#include "gdbus-sessionbus.h"
|
#include "gdbus-sessionbus.h"
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
time_out (gpointer unused G_GNUC_UNUSED)
|
||||||
|
{
|
||||||
|
g_error ("Timed out");
|
||||||
|
/* not reached */
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static guint
|
||||||
|
add_timeout (guint seconds)
|
||||||
|
{
|
||||||
|
#ifdef G_OS_UNIX
|
||||||
|
/* Safety-catch against the main loop having blocked */
|
||||||
|
alarm (seconds + 5);
|
||||||
|
#endif
|
||||||
|
return g_timeout_add_seconds (seconds, time_out, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
cancel_timeout (guint timeout_id)
|
||||||
|
{
|
||||||
|
#ifdef G_OS_UNIX
|
||||||
|
alarm (0);
|
||||||
|
#endif
|
||||||
|
g_source_remove (timeout_id);
|
||||||
|
}
|
||||||
|
|
||||||
/* Markup printing {{{1 */
|
/* Markup printing {{{1 */
|
||||||
|
|
||||||
/* This used to be part of GLib, but it was removed before the stable
|
/* This used to be part of GLib, but it was removed before the stable
|
||||||
@ -1017,7 +1044,9 @@ do_subscriptions (GDBusConnection *exporter_connection,
|
|||||||
GMainLoop *loop;
|
GMainLoop *loop;
|
||||||
GError *error = NULL;
|
GError *error = NULL;
|
||||||
guint export_id;
|
guint export_id;
|
||||||
|
guint timeout_id;
|
||||||
|
|
||||||
|
timeout_id = add_timeout (60);
|
||||||
loop = g_main_loop_new (NULL, FALSE);
|
loop = g_main_loop_new (NULL, FALSE);
|
||||||
|
|
||||||
menu = g_menu_new ();
|
menu = g_menu_new ();
|
||||||
@ -1084,6 +1113,7 @@ do_subscriptions (GDBusConnection *exporter_connection,
|
|||||||
g_object_unref (menu);
|
g_object_unref (menu);
|
||||||
|
|
||||||
g_main_loop_unref (loop);
|
g_main_loop_unref (loop);
|
||||||
|
cancel_timeout (timeout_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
Loading…
Reference in New Issue
Block a user