[glib/glib-2-54] gmenumodel test: If something goes wrong, don't wait forever
- From: Philip Withnall <pwithnall src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib/glib-2-54] gmenumodel test: If something goes wrong, don't wait forever
- Date: Thu, 21 Dec 2017 10:51:35 +0000 (UTC)
commit 003c392a3befe761a79eba169b3d2be65c6404b7
Author: Simon McVittie <smcv collabora com>
Date: Tue Dec 19 12:52:00 2017 +0000
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: https://bugzilla.gnome.org/show_bug.cgi?id=791744
Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=884661
gio/tests/gmenumodel.c | 30 ++++++++++++++++++++++++++++++
1 files changed, 30 insertions(+), 0 deletions(-)
---
diff --git a/gio/tests/gmenumodel.c b/gio/tests/gmenumodel.c
index a604f99..d18103b 100644
--- a/gio/tests/gmenumodel.c
+++ b/gio/tests/gmenumodel.c
@@ -2,6 +2,33 @@
#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 */
/* This used to be part of GLib, but it was removed before the stable
@@ -818,7 +845,9 @@ test_dbus_subscriptions (void)
GMainLoop *loop;
GError *error = NULL;
guint export_id;
+ guint timeout_id;
+ timeout_id = add_timeout (60);
loop = g_main_loop_new (NULL, FALSE);
bus = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, NULL);
@@ -883,6 +912,7 @@ test_dbus_subscriptions (void)
g_main_loop_unref (loop);
g_object_unref (bus);
+ cancel_timeout (timeout_id);
}
static gpointer
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]