apps test: add new "monitor" subcommand
authorRyan Lortie <desrt@desrt.ca>
Tue, 9 Sep 2014 17:58:18 +0000 (13:58 -0400)
committerRyan Lortie <desrt@desrt.ca>
Tue, 9 Sep 2014 18:11:38 +0000 (14:11 -0400)
Waits until something modifies a desktop directory, then exits.

https://bugzilla.gnome.org/show_bug.cgi?id=736350

gio/tests/apps.c

index dedd719..191edd4 100644 (file)
@@ -1,6 +1,7 @@
 #include <gio/gio.h>
 #include <gio/gdesktopappinfo.h>
 #include <locale.h>
+#include <stdlib.h>
 
 static void
 print (const gchar *str)
@@ -20,6 +21,13 @@ print_app_list (GList *list)
     }
 }
 
+static void
+quit (gpointer user_data)
+{
+  g_print ("appinfo database changed.\n");
+  exit (0);
+}
+
 int
 main (int argc, char **argv)
 {
@@ -119,5 +127,21 @@ main (int argc, char **argv)
         }
     }
 
+  else if (g_str_equal (argv[1], "monitor"))
+    {
+      GAppInfoMonitor *monitor;
+      GAppInfo *info;
+
+      monitor = g_app_info_monitor_get ();
+
+      info = (GAppInfo *) g_desktop_app_info_new ("this-desktop-file-does-not-exist");
+      g_assert (!info);
+
+      g_signal_connect (monitor, "changed", G_CALLBACK (quit), NULL);
+
+      while (1)
+        g_main_context_iteration (NULL, TRUE);
+    }
+
   return 0;
 }