[cheese] cheese-camera: Handle more bus messages
- From: Luciana Fujii Pontello <lufujii src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [cheese] cheese-camera: Handle more bus messages
- Date: Fri, 14 Jan 2011 16:30:20 +0000 (UTC)
commit 82b4a6804bf47817adc1d832d2d0eb62697f6b14
Author: Luciana Fujii Pontello <luciana fujii eti br>
Date: Thu Jan 13 16:32:36 2011 -0200
cheese-camera: Handle more bus messages
When bus receives error or warning messages, we parse them and print
warning messages.
libcheese/cheese-camera.c | 65 ++++++++++++++++++++++++++++++++------------
1 files changed, 47 insertions(+), 18 deletions(-)
---
diff --git a/libcheese/cheese-camera.c b/libcheese/cheese-camera.c
index ced9a4f..3eea5ae 100644
--- a/libcheese/cheese-camera.c
+++ b/libcheese/cheese-camera.c
@@ -198,33 +198,62 @@ cheese_camera_bus_message_cb (GstBus *bus, GstMessage *message, CheeseCamera *ca
{
CheeseCameraPrivate *priv = CHEESE_CAMERA_GET_PRIVATE (camera);
- if (GST_MESSAGE_TYPE (message) == GST_MESSAGE_EOS)
+ switch (GST_MESSAGE_TYPE (message))
{
- if (priv->is_recording)
+ case GST_MESSAGE_EOS:
{
- GST_DEBUG ("Received EOS message");
+ if (priv->is_recording)
+ {
+ GST_DEBUG ("Received EOS message");
+
+ g_source_remove (priv->eos_timeout_id);
- g_source_remove (priv->eos_timeout_id);
+ /* emit signal by name here as the camera_signals array is empty in this thread */
+ /* TODO: really understand how threads and static works and why this is needed */
+ g_signal_emit_by_name (camera, "video-saved", NULL);
- /* emit signal by name here as the camera_signals array is empty in this thread */
- /* TODO: really understand how threads and static works and why this is needed */
- g_signal_emit_by_name (camera, "video-saved", NULL);
+ cheese_camera_change_sink (camera, priv->video_display_bin,
+ priv->photo_save_bin, priv->video_save_bin);
+ priv->is_recording = FALSE;
+ }
- cheese_camera_change_sink (camera, priv->video_display_bin,
- priv->photo_save_bin, priv->video_save_bin);
- priv->is_recording = FALSE;
}
- }
- else if (GST_MESSAGE_TYPE (message) == GST_MESSAGE_STATE_CHANGED)
- {
- if (strcmp (GST_MESSAGE_SRC_NAME (message), "pipeline") == 0)
+ case GST_MESSAGE_WARNING:
+ {
+ GError *err;
+ gchar *debug;
+
+ gst_message_parse_warning (message, &err, &debug);
+ g_warning ("%s\n", err->message);
+ g_error_free (err);
+ g_free (debug);
+ break;
+ }
+ case GST_MESSAGE_ERROR:
{
- GstState old, new;
- gst_message_parse_state_changed (message, &old, &new, NULL);
- if (new == GST_STATE_PLAYING)
+ GError *err;
+ gchar *debug;
+
+ gst_message_parse_error (message, &err, &debug);
+ g_warning ("%s\n", err->message);
+ g_error_free (err);
+ g_free (debug);
+ break;
+ }
+ case GST_MESSAGE_STATE_CHANGED:
+ {
+ if (strcmp (GST_MESSAGE_SRC_NAME (message), "pipeline") == 0)
{
- g_signal_emit (camera, camera_signals[STATE_CHANGED], 0, new);
+ GstState old, new;
+ gst_message_parse_state_changed (message, &old, &new, NULL);
+ if (new == GST_STATE_PLAYING)
+ g_signal_emit (camera, camera_signals[STATE_CHANGED], 0, new);
}
+ break;
+ }
+ default:
+ {
+ break;
}
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]