diff options
Diffstat (limited to 'tools')
-rw-r--r-- | tools/gst-device-monitor.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/tools/gst-device-monitor.c b/tools/gst-device-monitor.c index 5765de43b..2b802c392 100644 --- a/tools/gst-device-monitor.c +++ b/tools/gst-device-monitor.c @@ -268,6 +268,13 @@ bus_msg_handler (GstBus * bus, GstMessage * msg, gpointer user_data) return TRUE; } +static gboolean +quit_loop (GMainLoop * loop) +{ + g_main_loop_quit (loop); + return G_SOURCE_REMOVE; +} + int main (int argc, char **argv) { @@ -364,12 +371,16 @@ main (int argc, char **argv) GST_INFO ("Took %.2f seconds", g_timer_elapsed (timer, NULL)); - if (follow) { + if (!follow) { + /* Consume all the messages pending on the bus and exit */ + g_idle_add ((GSourceFunc) quit_loop, app.loop); + } else { g_print ("Monitoring devices, waiting for devices to be removed or " "new devices to be added...\n"); - g_main_loop_run (app.loop); } + g_main_loop_run (app.loop); + gst_device_monitor_stop (app.monitor); gst_object_unref (app.monitor); |