pidgin.vv: a7974794: Get rid of the media tab in the preferen...
maiku at soc.pidgin.im
maiku at soc.pidgin.im
Fri Apr 3 02:50:45 EDT 2009
-----------------------------------------------------------------
Revision: a797479464a6076b96e2bf2da9ccf62bed86e8ac
Ancestor: 54b75693daa4888d97db3e0f42dedc18239559b5
Author: maiku at soc.pidgin.im
Date: 2009-04-03T05:24:47
Branch: im.pidgin.pidgin.vv
URL: http://d.pidgin.im/viewmtn/revision/info/a797479464a6076b96e2bf2da9ccf62bed86e8ac
Modified files:
pidgin/gtkprefs.c
ChangeLog:
Get rid of the media tab in the preferences.
-------------- next part --------------
============================================================
--- pidgin/gtkprefs.c 4e374e4fe0364c46d63e069313a61604b8607cd1
+++ pidgin/gtkprefs.c a87a7f8295af6d8ab1e2689c9d9b019183b89744
@@ -28,9 +28,6 @@
#include "pidgin.h"
#include "debug.h"
-#ifdef USE_VV
-#include "mediamanager.h"
-#endif
#include "notify.h"
#include "prefs.h"
#include "proxy.h"
@@ -57,10 +54,6 @@
#include "gtkutils.h"
#include "pidginstock.h"
-#ifdef USE_VV
-#include <gst/interfaces/propertyprobe.h>
-#endif
-
#define PROXYHOST 0
#define PROXYPORT 1
#define PROXYUSER 2
@@ -2406,319 +2399,8 @@ sound_page(void)
return ret;
}
-#ifdef USE_VV
-static GList*
-get_devices(const gchar *plugin)
-{
- GObjectClass *klass;
- GstPropertyProbe *probe;
- const GParamSpec *pspec;
- GstElement *element = gst_element_factory_make(plugin, NULL);
- GstElementFactory *factory;
- const gchar *longname = NULL;
- GList *ret = NULL;
- if (element == NULL)
- return NULL;
-
- factory = gst_element_get_factory(element);
-
- longname = gst_element_factory_get_longname(factory);
- klass = G_OBJECT_GET_CLASS(element);
-
- if (!g_object_class_find_property(klass, "device") ||
- !GST_IS_PROPERTY_PROBE(element) ||
- !(probe = GST_PROPERTY_PROBE(element)) ||
- !(pspec = gst_property_probe_get_property(probe,
- "device"))) {
- purple_debug_info("media",
- "Found source '%s' (%s) - no device\n",
- longname, GST_PLUGIN_FEATURE (factory)->name);
- } else {
- gint n;
- gchar *name;
- GValueArray *array;
-
- purple_debug_info("media", "Found devices\n");
-
- /* Set autoprobe[-fps] to FALSE to avoid delays when probing. */
- if (g_object_class_find_property (klass, "autoprobe")) {
- g_object_set(G_OBJECT (element),
- "autoprobe", FALSE, NULL);
- if (g_object_class_find_property(klass,
- "autoprobe-fps")) {
- g_object_set(G_OBJECT(element),
- "autoprobe-fps", FALSE, NULL);
- }
- }
-
- array = gst_property_probe_probe_and_get_values(probe, pspec);
- if (array != NULL) {
- for (n = 0 ; n < array->n_values ; n++) {
- GValue *device = g_value_array_get_nth(
- array, n);
-
- ret = g_list_append(ret,
- g_value_dup_string(device));
-
- g_object_set(G_OBJECT(element), "device",
- g_value_get_string(device),
- NULL);
- g_object_get(G_OBJECT(element),
- "device-name", &name, NULL);
- purple_debug_info("media", "Found source '%s'"
- " (%s) - device '%s' (%s)\n",
- longname, GST_PLUGIN_FEATURE(
- factory)->name, name,
- g_value_get_string(device));
- g_free(name);
- }
- g_value_array_free(array);
- }
-
- /* Restore autoprobe[-fps] to TRUE. */
- if (g_object_class_find_property(klass, "autoprobe")) {
- g_object_set(G_OBJECT(element),
- "autoprobe", TRUE, NULL);
- if (g_object_class_find_property(klass,
- "autoprobe-fps")) {
- g_object_set(G_OBJECT(element),
- "autoprobe-fps", TRUE, NULL);
- }
- }
- }
-
- gst_object_unref(element);
- return ret;
-}
-
-/* get a GList of pairs name / device */
-static GList *
-get_device_items(const gchar *plugin)
-{
- GList *ret = NULL;
- GList *devices = get_devices(plugin);
- GstElement *element = gst_element_factory_make(plugin, NULL);
-
- if (element == NULL)
- return NULL;
-
- for(; devices ; devices = g_list_delete_link(devices, devices)) {
- gchar *name;
- g_object_set(G_OBJECT(element), "device", devices->data, NULL);
- g_object_get(G_OBJECT(element), "device-name", &name, NULL);
- ret = g_list_append(ret, name);
- ret = g_list_append(ret, devices->data);
- }
-
- gst_object_unref(element);
- return ret;
-}
-
-/*
- * Test functions to run video preview
- */
-static gboolean
-preview_video_bus_call(GstBus *bus, GstMessage *msg, gpointer pipeline)
-{
- switch(GST_MESSAGE_TYPE(msg)) {
- case GST_MESSAGE_EOS:
- purple_debug_info("preview-video", "End of Stream\n");
- break;
- case GST_MESSAGE_ERROR: {
- gchar *debug = NULL;
- GError *err = NULL;
-
- gst_message_parse_error(msg, &err, &debug);
-
- purple_debug_error("preview-video", "Error: %s\n", err->message);
- g_error_free(err);
-
- if (debug) {
- purple_debug_error("preview-video", "details: %s\n", debug);
- g_free (debug);
- }
- break;
- }
- default:
- return TRUE;
- }
-
- gst_element_set_state(pipeline, GST_STATE_NULL);
- gst_object_unref(GST_PIPELINE(pipeline));
- return FALSE;
-}
-
static void
-preview_button_clicked(GtkWidget *widget, gpointer *data)
-{
- const char *plugin = purple_prefs_get_string("/purple/media/video/plugin");
- const char *device = purple_prefs_get_string("/purple/media/video/device");
- GstBus *bus;
-
- /* create a preview window... */
- GstElement *pipeline = NULL;
- GError *p_err = NULL;
-
- gchar *test_pipeline_str = NULL;
-
- if (strlen(device) > 0)
- test_pipeline_str = g_strdup_printf("%s device=\"%s\" !" \
- " ffmpegcolorspace !" \
- " autovideosink",
- plugin, device);
- else
- test_pipeline_str = g_strdup_printf("%s ! ffmpegcolorspace !" \
- " autovideosink", plugin);
-
- pipeline = gst_parse_launch (test_pipeline_str, &p_err);
-
- g_free(test_pipeline_str);
-
- if (pipeline == NULL) {
- purple_debug_error("gtkprefs",
- "Error starting preview: %s\n", p_err->message);
- g_error_free(p_err);
- return;
- }
-
- bus = gst_pipeline_get_bus(GST_PIPELINE(pipeline));
- gst_bus_add_watch(bus, preview_video_bus_call, pipeline);
- gst_object_unref(bus);
-
- gst_element_set_state(pipeline, GST_STATE_PLAYING);
-}
-
-static void
-media_plugin_changed_cb(const gchar *name, PurplePrefType type,
- gconstpointer value, gpointer data)
-{
- GtkWidget *hbox = data;
- GtkWidget *dd = NULL;
- GtkWidget *preview_button = NULL;
- const char *plugin = value;
- const char *device = purple_prefs_get_string("/purple/media/video/device");
- GList *video_items = get_device_items(plugin);
- GList *list;
-
- if (video_items == NULL) {
- video_items = g_list_prepend(video_items, g_strdup(""));
- video_items = g_list_prepend(video_items, g_strdup("Default"));
- }
-
- if (g_list_find(video_items, device) == NULL)
- {
- purple_prefs_set_string("/purple/media/video/device",
- g_list_next(video_items)->data);
- }
-
- list = gtk_container_get_children(GTK_CONTAINER(hbox));
-
- while (list) {
- gtk_widget_destroy(list->data);
- list = g_list_delete_link(list, list);
- }
-
- dd = pidgin_prefs_dropdown_from_list(hbox, _("_Device:"), PURPLE_PREF_STRING,
- "/purple/media/video/device",
- video_items);
-
- gtk_misc_set_alignment(GTK_MISC(dd), 0, 0.5);
-
- preview_button = gtk_button_new_with_mnemonic(_("_Preview"));
- g_signal_connect(G_OBJECT(preview_button), "clicked",
- G_CALLBACK(preview_button_clicked), NULL);
-
- gtk_container_add(GTK_CONTAINER(hbox), preview_button);
-
- gtk_widget_show_all(hbox);
-}
-
-static GtkWidget *
-media_page()
-{
- GtkWidget *ret;
- GtkWidget *vbox;
- GtkWidget *hbox;
- GtkWidget *dd;
- GtkWidget *preview_button;
- GtkWidget *sw;
- GtkSizeGroup *sg, *sg2;
- const char *plugin = purple_prefs_get_string("/purple/media/video/plugin");
- const char *device = purple_prefs_get_string("/purple/media/video/device");
- GList *video_items = get_device_items(plugin);
- GList *audio_items = get_device_items("alsasrc");
-
- if (video_items == NULL) {
- video_items = g_list_prepend(video_items, "");
- video_items = g_list_prepend(video_items, "Default");
- }
-
- if (g_list_find(video_items, device) == NULL)
- {
- purple_prefs_set_string("/purple/media/video/device",
- g_list_next(video_items)->data);
- }
-
- ret = gtk_vbox_new(FALSE, PIDGIN_HIG_CAT_SPACE);
- gtk_container_set_border_width (GTK_CONTAINER (ret), PIDGIN_HIG_BORDER);
-
- sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
- sg2 = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
-
- vbox = pidgin_make_frame (ret, _("Video Input"));
- gtk_size_group_add_widget(sg2, vbox);
-
- hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BOX_SPACE);
- dd = pidgin_prefs_dropdown(vbox, _("_Plugin:"), PURPLE_PREF_STRING,
- "/purple/media/video/plugin",
- _("Default"), "gconfvideosrc",
- _("Video4Linux"), "v4lsrc",
- _("Video4Linux2"), "v4l2src",
- _("Video Test Source"), "videotestsrc",
- NULL);
-
- gtk_size_group_add_widget(sg, dd);
- gtk_misc_set_alignment(GTK_MISC(dd), 0, 0.5);
-
- hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BOX_SPACE);
- dd = pidgin_prefs_dropdown_from_list(hbox, _("Device:"), PURPLE_PREF_STRING,
- "/purple/media/video/device",
- video_items);
-
- purple_prefs_connect_callback(prefs, "/purple/media/video/plugin",
- media_plugin_changed_cb, hbox);
-
- g_signal_connect_swapped(hbox, "destroy",
- G_CALLBACK(purple_prefs_disconnect_by_handle), hbox);
-
- gtk_size_group_add_widget(sg, dd);
- gtk_misc_set_alignment(GTK_MISC(dd), 0, 0.5);
-
- preview_button = gtk_button_new_with_mnemonic(_("_Preview"));
- g_signal_connect(G_OBJECT(preview_button), "clicked",
- G_CALLBACK(preview_button_clicked), NULL);
-
- gtk_container_add(GTK_CONTAINER(hbox), preview_button);
- gtk_container_add(GTK_CONTAINER(vbox), hbox);
-
- vbox = pidgin_make_frame (ret, _("Audio Input"));
- gtk_size_group_add_widget(sg2, vbox);
- dd = pidgin_prefs_dropdown_from_list(vbox, _("Device:"), PURPLE_PREF_STRING,
- "/purple/media/audio/device",
- audio_items);
-
- gtk_size_group_add_widget(sg, dd);
- gtk_misc_set_alignment(GTK_MISC(dd), 0, 0.5);
-
- gtk_widget_show_all(ret);
-
- return ret;
-}
-
-#endif /* USE_VV */
-
-static void
set_idle_away(PurpleSavedStatus *status)
{
purple_prefs_set_int("/purple/savedstatus/idleaway", purple_savedstatus_get_creation_time(status));
@@ -2839,10 +2521,6 @@ static void prefs_notebook_init(void) {
prefs_notebook_add_page(_("Conversations"), conv_page(), notebook_page++);
prefs_notebook_add_page(_("Smiley Themes"), theme_page(), notebook_page++);
prefs_notebook_add_page(_("Sounds"), sound_page(), notebook_page++);
-
-#ifdef USE_VV
- prefs_notebook_add_page(_("Media"), media_page(), notebook_page++);
-#endif
prefs_notebook_add_page(_("Network"), network_page(), notebook_page++);
#ifndef _WIN32
/* We use the registered default browser in windows */
@@ -2979,18 +2657,6 @@ pidgin_prefs_init(void)
purple_prefs_connect_callback(prefs, PIDGIN_PREFS_ROOT "/smileys/theme",
smiley_theme_pref_cb, NULL);
-#ifdef USE_VV
- purple_prefs_add_none("/purple/media");
- purple_prefs_add_none("/purple/media/video");
- purple_prefs_add_string("/purple/media/video/plugin", "gconfvideosrc");
- purple_prefs_add_string("/purple/media/video/device", "");
- purple_prefs_add_none("/purple/media/audio");
- purple_prefs_add_string("/purple/media/audio/device", "");
- purple_prefs_add_none("/purple/media/audio/volume");
- purple_prefs_add_int("/purple/media/audio/volume/input", 10);
- purple_prefs_add_int("/purple/media/audio/volume/output", 10);
-#endif /* USE_VV */
-
pidgin_prefs_update_old();
}
More information about the Commits
mailing list