# HG changeset patch # User renatofilho # Date 1179355957 -3600 # Node ID 89bdaa9e72bf6dd5484b671efaf2da45c5c270d3 # Parent 1b7b4d7f714c0865894f1492c9dbd51ac136003c [svn r684] fixed bug on destructor diff -r 1b7b4d7f714c -r 89bdaa9e72bf gmyth-stream/gmemcoder/src/gmencoder.c --- a/gmyth-stream/gmemcoder/src/gmencoder.c Wed May 16 23:21:58 2007 +0100 +++ b/gmyth-stream/gmemcoder/src/gmencoder.c Wed May 16 23:52:37 2007 +0100 @@ -162,7 +162,7 @@ g_mencoder_signals[ERROR] = g_signal_new ("error", G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_FIRST, + G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING); @@ -246,11 +246,13 @@ if (prop != NULL) { for (i=0; i < g_strv_length (prop); i++) { - char** v = g_strsplit(prop[i], "=", 2); - if (g_strv_length (v) == 2) { - _obj_set_prop (G_OBJECT (ret), v[0], v[1]); - } - g_strfreev (v); + if (prop[i] != NULL) { + char** v = g_strsplit(prop[i], "=", 2); + if (g_strv_length (v) == 2) { + _obj_set_prop (G_OBJECT (ret), v[0], v[1]); + } + g_strfreev (v); + } } } @@ -635,16 +637,18 @@ } if (priv->pipe != NULL) { - gst_element_set_state (priv->pipe, GST_STATE_NULL); - gst_object_unref (priv->pipe); + GstState state; + GstState pending; + //gst_element_set_state (priv->pipe, GST_STATE_NULL); + //gst_object_unref (priv->pipe); + gst_object_unref (priv->src); + priv->src = NULL; priv->pipe = NULL; priv->abin = NULL; priv->vbin = NULL; priv->sink = NULL; } priv->ready = FALSE; - - } static GstElement* @@ -934,16 +938,23 @@ GError *error; gchar *debug; gchar *err_str; + + if (priv->tick_id != 0) { + g_source_remove (priv->tick_id); + priv->tick_id = 0; + } gst_message_parse_error (msg, &error, &debug); err_str = g_strdup_printf ("Error [%d] %s (%s)", error->code, error->message, debug); + g_debug ("%s", err_str); + priv->ready = FALSE; g_signal_emit (user_data, g_mencoder_signals[ERROR], 0, err_str); - priv->ready = FALSE; g_free (err_str); g_clear_error (&error); g_free (debug); + g_debug ("ERROR DONE"); break; } diff -r 1b7b4d7f714c -r 89bdaa9e72bf gmyth-stream/gmemcoder/src/main.c --- a/gmyth-stream/gmemcoder/src/main.c Wed May 16 23:21:58 2007 +0100 +++ b/gmyth-stream/gmemcoder/src/main.c Wed May 16 23:52:37 2007 +0100 @@ -26,19 +26,29 @@ static gchar* output_uri = NULL; + +static gboolean +_quit (gpointer data) +{ + g_debug ("Quit"); + g_object_unref (data); + g_main_loop_quit (mainloop); + return FALSE; +} + static void _mencoder_eos_cb (GMencoder *mencoder, gpointer data) -{ +{ g_print ("EOS\n"); - g_main_loop_quit ((GMainLoop *) data); + g_idle_add (_quit, mencoder); } + static void _mencoder_error_cb (GMencoder *mencoder, const gchar* msg, gpointer data) { g_print ("Error: %s\n", msg); - g_mencoder_close_stream (mencoder); - g_main_loop_quit ((GMainLoop *) data); + g_idle_add (_quit, mencoder); } static gboolean