+2005-12-30 Stefan Kost <ensonic@users.sf.net>
+
+ * configure.ac:
+ * gst/volume/Makefile.am:
+ * gst/volume/demo.c:
+ move old example to tests/examples/volume/volune.c
+ * tests/examples/Makefile.am:
+ * tests/examples/seek/seek.c: (main):
+ change window-close event from "delete-event" to "destroy"
+ * tests/examples/volume/Makefile.am:
+ * tests/examples/volume/volume.c: (value_changed_callback),
+ (setup_gui), (message_received), (eos_message_received), (main):
+ fix event handling and bus usage
+
+
2005-12-29 Stefan Kost <ensonic@users.sf.net>
* gst/audiotestsrc/gstaudiotestsrc.c:
g_signal_connect (G_OBJECT (flush_checkbox), "toggled",
G_CALLBACK (flush_toggle_cb), pipeline);
- g_signal_connect (G_OBJECT (window), "delete_event", gtk_main_quit, NULL);
+ g_signal_connect (G_OBJECT (window), "destroy", gtk_main_quit, NULL);
/* show the gui. */
gtk_widget_show_all (window);
/* GStreamer
*
- * demo.c: sample application to change the volume of a pipeline
+ * volume.c: sample application to change the volume of a pipeline
*
* Copyright (C) <2004> Thomas Vander Stichele <thomas at apestaart dot org>
*
gtk_widget_show_all (GTK_WIDGET (window));
}
+static void
+message_received (GstBus * bus, GstMessage * message, GstPipeline * pipeline)
+{
+ const GstStructure *s;
+
+ s = gst_message_get_structure (message);
+ g_print ("message from \"%s\" (%s): ",
+ GST_STR_NULL (GST_ELEMENT_NAME (GST_MESSAGE_SRC (message))),
+ gst_message_type_get_name (GST_MESSAGE_TYPE (message)));
+ if (s) {
+ gchar *sstr;
+
+ sstr = gst_structure_to_string (s);
+ g_print ("%s\n", sstr);
+ g_free (sstr);
+ } else {
+ g_print ("no message details\n");
+ }
+}
+
+static void
+eos_message_received (GstBus * bus, GstMessage * message,
+ GstPipeline * pipeline)
+{
+ message_received (bus, message, pipeline);
+ gtk_main_quit ();
+}
+
int
main (int argc, char *argv[])
{
GstElement *pipeline = NULL;
GError *error = NULL;
GstElement *volume;
+ GstBus *bus;
gst_init (&argc, &argv);
gtk_init (&argc, &argv);
return 1;
}
+ /* setup message handling */
+ bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline));
+ gst_bus_add_signal_watch_full (bus, G_PRIORITY_HIGH);
+ g_signal_connect (bus, "message::error", (GCallback) message_received,
+ pipeline);
+ g_signal_connect (bus, "message::warning", (GCallback) message_received,
+ pipeline);
+ g_signal_connect (bus, "message::eos", (GCallback) eos_message_received,
+ pipeline);
+
/* setup GUI */
setup_gui (volume);
/* go to main loop */
gst_element_set_state (pipeline, GST_STATE_PLAYING);
- gst_bus_poll (gst_element_get_bus (pipeline),
- GST_MESSAGE_EOS | GST_MESSAGE_ERROR, -1);
+ gtk_main ();
gst_element_set_state (pipeline, GST_STATE_NULL);
+ gst_object_unref (pipeline);
return 0;
}