# HG changeset patch # User Mike Ruprecht # Date 1249437482 0 # Node ID 6ed9c1def7c83fee86310703f707c5ad0615d36f # Parent 94d7701a242ebb4c3a9c7c0ae567769265574190 Allow setting properties on GStreamer elements with fs-element.conf. diff -r 94d7701a242e -r 6ed9c1def7c8 libpurple/mediamanager.c --- a/libpurple/mediamanager.c Wed Aug 05 01:34:21 2009 +0000 +++ b/libpurple/mediamanager.c Wed Aug 05 01:58:02 2009 +0000 @@ -39,6 +39,7 @@ #ifdef USE_VV #include +#include #include /** @copydoc _PurpleMediaManagerPrivate */ @@ -229,6 +230,9 @@ g_return_val_if_fail(PURPLE_IS_MEDIA_MANAGER(manager), NULL); if (manager->priv->pipeline == NULL) { + gchar *filename; + GError *err = NULL; + GKeyFile *keyfile; GstBus *bus; manager->priv->pipeline = gst_pipeline_new(NULL); @@ -241,6 +245,33 @@ gst_bus_sync_signal_handler, NULL); gst_object_unref(bus); + filename = g_build_filename(purple_user_dir(), + "fs-element.conf", NULL); + keyfile = g_key_file_new(); + if (g_key_file_load_from_file(keyfile, filename, + G_KEY_FILE_NONE, &err)) { + FsElementAddedNotifier *notifier = + fs_element_added_notifier_new(); + fs_element_added_notifier_add(notifier, + GST_BIN(manager->priv->pipeline)); + fs_element_added_notifier_set_properties_from_keyfile( + notifier, keyfile); + } else { + if (err->code == 4) + purple_debug_info("mediamanager", + "Couldn't read " + "fs-element.conf: %s\n", + err->message); + else + purple_debug_error("mediamanager", + "Error reading " + "fs-element.conf: %s\n", + err->message); + g_error_free(err); + g_key_file_free(keyfile); + } + g_free(filename); + gst_element_set_state(manager->priv->pipeline, GST_STATE_PLAYING); }