pidgin/plugins/vvconfig.c

Tue, 07 May 2013 05:04:46 -0400

author
Elliott Sales de Andrade <qulogic@pidgin.im>
date
Tue, 07 May 2013 05:04:46 -0400
changeset 33923
0fcc5635daba
parent 33283
7b12c4d2c6d7
permissions
-rw-r--r--

Rewrite debug window filter in JS.

Note, this does cause a couple regressions, but they are probably not
that big a deal. First, the JS regular expression syntax is slightly
different. Second, the JS regex API lacks a way to reliably determine
the location of matched groups, so we can't highlight just the groups
and must highlight the entire expression.

I suspect that none of our users ever had to use any fancy regex in the
debug window, and that most of our developers didn't even know it could
be done. So I doubt these regressions will cause much pain.

28324
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
1 /*
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
2 * Configures microphones and webcams for voice and video
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
3 * Copyright (C) 2009 Mike Ruprecht <cmaiku@gmail.com>
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
4 *
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
5 * This program is free software; you can redistribute it and/or
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
6 * modify it under the terms of the GNU General Public License
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
7 * as published by the Free Software Foundation; either version 2
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
8 * of the License, or (at your option) any later version.
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
9 *
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
10 * This program is distributed in the hope that it will be useful,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
13 * GNU General Public License for more details.
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
14 *
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
16 * along with this program; if not, write to the Free Software
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301, USA.
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
18 */
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
19 #include "internal.h"
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
20
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
21 #include "debug.h"
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
22 #include "mediamanager.h"
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
23 #include "media-gst.h"
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
24 #include "version.h"
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
25 #include "gtkplugin.h"
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
26 #include "gtkutils.h"
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
27 #include "gtkprefs.h"
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
28
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
29 #include <gst/interfaces/propertyprobe.h>
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
30
30745
8346d194d563 media: Added a plugin action menu for the voice and video settings plugin.
Marcus Lundblad <malu@pidgin.im>
parents: 28324
diff changeset
31 /* container window for showing a stand-alone configurator */
8346d194d563 media: Added a plugin action menu for the voice and video settings plugin.
Marcus Lundblad <malu@pidgin.im>
parents: 28324
diff changeset
32 static GtkWidget *window = NULL;
8346d194d563 media: Added a plugin action menu for the voice and video settings plugin.
Marcus Lundblad <malu@pidgin.im>
parents: 28324
diff changeset
33
28324
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
34 static PurpleMediaElementInfo *old_video_src = NULL, *old_video_sink = NULL,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
35 *old_audio_src = NULL, *old_audio_sink = NULL;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
36
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
37 static const gchar *AUDIO_SRC_PLUGINS[] = {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
38 "alsasrc", "ALSA",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
39 /* "esdmon", "ESD", ? */
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
40 "osssrc", "OSS",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
41 "pulsesrc", "PulseAudio",
33281
ba9ee604d50a Update sndio audio backend names in vvconfig plugin.
Brad Smith <brad@comstyle.com>
parents: 32748
diff changeset
42 "sndiosrc", "sndio",
28324
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
43 /* "audiotestsrc wave=silence", "Silence", */
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
44 "audiotestsrc", "Test Sound",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
45 NULL
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
46 };
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
47
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
48 static const gchar *AUDIO_SINK_PLUGINS[] = {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
49 "alsasink", "ALSA",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
50 "artsdsink", "aRts",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
51 "esdsink", "ESD",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
52 "osssink", "OSS",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
53 "pulsesink", "PulseAudio",
33281
ba9ee604d50a Update sndio audio backend names in vvconfig plugin.
Brad Smith <brad@comstyle.com>
parents: 32748
diff changeset
54 "sndiosink", "sndio",
28324
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
55 NULL
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
56 };
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
57
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
58 static const gchar *VIDEO_SRC_PLUGINS[] = {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
59 "videotestsrc", "Test Input",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
60 "dshowvideosrc","DirectDraw",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
61 "ksvideosrc", "KS Video",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
62 "qcamsrc", "Quickcam",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
63 "v4lsrc", "Video4Linux",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
64 "v4l2src", "Video4Linux2",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
65 "v4lmjpegsrc", "Video4Linux MJPEG",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
66 NULL
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
67 };
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
68
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
69 static const gchar *VIDEO_SINK_PLUGINS[] = {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
70 /* "aasink", "AALib", Didn't work for me */
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
71 "directdrawsink","DirectDraw",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
72 "glimagesink", "OpenGL",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
73 "ximagesink", "X Window System",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
74 "xvimagesink", "X Window System (Xv)",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
75 NULL
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
76 };
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
77
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
78 static GList *
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
79 get_element_devices(const gchar *element_name)
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
80 {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
81 GList *ret = NULL;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
82 GstElement *element;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
83 GObjectClass *klass;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
84 GstPropertyProbe *probe;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
85 const GParamSpec *pspec;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
86
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
87 ret = g_list_prepend(ret, (gpointer)_("Default"));
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
88 ret = g_list_prepend(ret, "");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
89
31369
d7b8fe78c9d2 vvconfig: Don't crash when the stored device isn't found in the list of
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31294
diff changeset
90 if (!strcmp(element_name, "<custom>") || (*element_name == '\0')) {
d7b8fe78c9d2 vvconfig: Don't crash when the stored device isn't found in the list of
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31294
diff changeset
91 return g_list_reverse(ret);
28324
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
92 }
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
93
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
94 element = gst_element_factory_make(element_name, "test");
31681
0f60ba9bf9c7 Fix another vvconfig crash. Fixes #13290, #13774.
Pat Erley <pat@erley.org>
parents: 31623
diff changeset
95 if(!element) {
0f60ba9bf9c7 Fix another vvconfig crash. Fixes #13290, #13774.
Pat Erley <pat@erley.org>
parents: 31623
diff changeset
96 purple_debug_info("vvconfig", "'%s' - unable to find element\n", element_name);
0f60ba9bf9c7 Fix another vvconfig crash. Fixes #13290, #13774.
Pat Erley <pat@erley.org>
parents: 31623
diff changeset
97 return g_list_reverse(ret);
0f60ba9bf9c7 Fix another vvconfig crash. Fixes #13290, #13774.
Pat Erley <pat@erley.org>
parents: 31623
diff changeset
98 }
0f60ba9bf9c7 Fix another vvconfig crash. Fixes #13290, #13774.
Pat Erley <pat@erley.org>
parents: 31623
diff changeset
99
28324
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
100 klass = G_OBJECT_GET_CLASS (element);
31681
0f60ba9bf9c7 Fix another vvconfig crash. Fixes #13290, #13774.
Pat Erley <pat@erley.org>
parents: 31623
diff changeset
101 if(!klass) {
0f60ba9bf9c7 Fix another vvconfig crash. Fixes #13290, #13774.
Pat Erley <pat@erley.org>
parents: 31623
diff changeset
102 purple_debug_info("vvconfig", "'%s' - unable to find G_Object Class\n", element_name);
0f60ba9bf9c7 Fix another vvconfig crash. Fixes #13290, #13774.
Pat Erley <pat@erley.org>
parents: 31623
diff changeset
103 return g_list_reverse(ret);
0f60ba9bf9c7 Fix another vvconfig crash. Fixes #13290, #13774.
Pat Erley <pat@erley.org>
parents: 31623
diff changeset
104 }
0f60ba9bf9c7 Fix another vvconfig crash. Fixes #13290, #13774.
Pat Erley <pat@erley.org>
parents: 31623
diff changeset
105
28324
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
106 if (!g_object_class_find_property(klass, "device") ||
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
107 !GST_IS_PROPERTY_PROBE(element) ||
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
108 !(probe = GST_PROPERTY_PROBE(element)) ||
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
109 !(pspec = gst_property_probe_get_property(probe, "device"))) {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
110 purple_debug_info("vvconfig", "'%s' - no device\n", element_name);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
111 } else {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
112 gint n;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
113 GValueArray *array;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
114
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
115 /* Set autoprobe[-fps] to FALSE to avoid delays when probing. */
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
116 if (g_object_class_find_property (klass, "autoprobe")) {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
117 g_object_set (G_OBJECT (element), "autoprobe", FALSE, NULL);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
118 if (g_object_class_find_property (klass, "autoprobe-fps")) {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
119 g_object_set (G_OBJECT (element), "autoprobe-fps", FALSE, NULL);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
120 }
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
121 }
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
122
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
123 array = gst_property_probe_probe_and_get_values (probe, pspec);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
124 if (array == NULL) {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
125 purple_debug_info("vvconfig", "'%s' has no devices\n", element_name);
31369
d7b8fe78c9d2 vvconfig: Don't crash when the stored device isn't found in the list of
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31294
diff changeset
126 return g_list_reverse(ret);
28324
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
127 }
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 31279
diff changeset
128
28324
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
129 for (n=0; n < array->n_values; ++n) {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
130 GValue *device;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
131 const gchar *name;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
132 const gchar *device_name;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
133
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
134 device = g_value_array_get_nth(array, n);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
135 g_object_set_property(G_OBJECT(element), "device", device);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
136 if (gst_element_set_state(element, GST_STATE_READY)
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
137 != GST_STATE_CHANGE_SUCCESS) {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
138 purple_debug_warning("vvconfig",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
139 "Error changing state of %s\n",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
140 element_name);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
141 continue;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
142 }
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
143
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
144 g_object_get(G_OBJECT(element), "device-name", &name, NULL);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
145 device_name = g_value_get_string(device);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
146 if (name == NULL)
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
147 name = _("Unknown");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
148 purple_debug_info("vvconfig", "Found device %s : %s for %s\n",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
149 device_name, name, element_name);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
150 ret = g_list_prepend(ret, (gpointer)name);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
151 ret = g_list_prepend(ret, (gpointer)device_name);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
152 gst_element_set_state(element, GST_STATE_NULL);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
153 }
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
154 }
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
155 gst_object_unref(element);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 31279
diff changeset
156
31369
d7b8fe78c9d2 vvconfig: Don't crash when the stored device isn't found in the list of
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31294
diff changeset
157 return g_list_reverse(ret);
28324
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
158 }
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
159
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
160 static GList *
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
161 get_element_plugins(const gchar **plugins)
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
162 {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
163 GList *ret = NULL;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
164
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
165 ret = g_list_prepend(ret, "Default");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
166 ret = g_list_prepend(ret, "");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
167 for (; plugins[0] && plugins[1]; plugins += 2) {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
168 if (gst_default_registry_check_feature_version(
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
169 plugins[0], 0, 0, 0)) {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
170 ret = g_list_prepend(ret, (gpointer)plugins[1]);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
171 ret = g_list_prepend(ret, (gpointer)plugins[0]);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
172 }
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
173 }
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
174 ret = g_list_reverse(ret);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
175 return ret;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
176 }
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
177
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
178 static void
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
179 device_changed_cb(const gchar *name, PurplePrefType type,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
180 gconstpointer value, gpointer data)
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
181 {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
182 GtkSizeGroup *sg = data;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
183 GtkWidget *parent, *widget;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
184 GSList *widgets;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
185 GList *devices;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
186 GValue gvalue;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
187 gint position;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
188 gchar *label, *pref;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
189
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
190 widgets = gtk_size_group_get_widgets(GTK_SIZE_GROUP(sg));
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
191 for (; widgets; widgets = g_slist_next(widgets)) {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
192 const gchar *widget_name =
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
193 gtk_widget_get_name(GTK_WIDGET(widgets->data));
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
194 if (!strcmp(widget_name, name)) {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
195 gchar *temp_str;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
196 gchar delimiters[3] = {0, 0, 0};
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
197 const gchar *text;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
198 gint keyval, pos;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
199
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
200 widget = widgets->data;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
201 /* Get label with _ from the GtkLabel */
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
202 text = gtk_label_get_text(GTK_LABEL(widget));
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
203 keyval = gtk_label_get_mnemonic_keyval(GTK_LABEL(widget));
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
204 delimiters[0] = g_ascii_tolower(keyval);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
205 delimiters[1] = g_ascii_toupper(keyval);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
206 pos = strcspn(text, delimiters);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
207 if (pos != -1) {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
208 temp_str = g_strndup(text, pos);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
209 label = g_strconcat(temp_str, "_",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
210 text + pos, NULL);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
211 g_free(temp_str);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
212 } else {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
213 label = g_strdup(text);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
214 }
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
215 break;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
216 }
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
217 }
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
218
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
219 if (widgets == NULL)
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
220 return;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
221
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
222 parent = gtk_widget_get_parent(widget);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
223 widget = parent;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
224 parent = gtk_widget_get_parent(GTK_WIDGET(widget));
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
225 gvalue.g_type = 0;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
226 g_value_init(&gvalue, G_TYPE_INT);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
227 gtk_container_child_get_property(GTK_CONTAINER(parent),
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
228 GTK_WIDGET(widget), "position", &gvalue);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
229 position = g_value_get_int(&gvalue);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
230 g_value_unset(&gvalue);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
231 gtk_widget_destroy(widget);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
232
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
233 pref = g_strdup(name);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
234 strcpy(pref + strlen(pref) - strlen("plugin"), "device");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
235 devices = get_element_devices(value);
31369
d7b8fe78c9d2 vvconfig: Don't crash when the stored device isn't found in the list of
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31294
diff changeset
236 if (g_list_find_custom(devices, purple_prefs_get_string(pref),
d7b8fe78c9d2 vvconfig: Don't crash when the stored device isn't found in the list of
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31294
diff changeset
237 (GCompareFunc)strcmp) == NULL)
28324
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
238 purple_prefs_set_string(pref, g_list_next(devices)->data);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
239 widget = pidgin_prefs_dropdown_from_list(parent,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
240 label, PURPLE_PREF_STRING,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
241 pref, devices);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
242 g_list_free(devices);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
243 g_signal_connect_swapped(widget, "destroy",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
244 G_CALLBACK(g_free), pref);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
245 g_free(label);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
246 gtk_misc_set_alignment(GTK_MISC(widget), 0, 0.5);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
247 gtk_widget_set_name(widget, name);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
248 gtk_size_group_add_widget(sg, widget);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
249 gtk_box_reorder_child(GTK_BOX(parent),
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
250 gtk_widget_get_parent(GTK_WIDGET(widget)), position);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
251 }
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
252
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
253 static void
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
254 get_plugin_frame(GtkWidget *parent, GtkSizeGroup *sg,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
255 const gchar *name, const gchar *plugin_label,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
256 const gchar **plugin_strs, const gchar *plugin_pref,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
257 const gchar *device_label, const gchar *device_pref)
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
258 {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
259 GtkWidget *vbox, *widget;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
260 GList *plugins, *devices;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
261
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
262 vbox = pidgin_make_frame(parent, name);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
263
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
264 /* Setup plugin preference */
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
265 plugins = get_element_plugins(plugin_strs);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
266 widget = pidgin_prefs_dropdown_from_list(vbox, plugin_label,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
267 PURPLE_PREF_STRING, plugin_pref, plugins);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
268 g_list_free(plugins);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
269 gtk_size_group_add_widget(sg, widget);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
270 gtk_misc_set_alignment(GTK_MISC(widget), 0, 0.5);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
271
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
272 /* Setup device preference */
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
273 devices = get_element_devices(purple_prefs_get_string(plugin_pref));
31279
c0104df45b93 vvconfig: Stop resetting device selections to defaults. Fixes #13044.
Jakub Adam <jakub.adam@ktknet.cz>
parents: 30752
diff changeset
274 if (g_list_find_custom(devices, purple_prefs_get_string(device_pref),
c0104df45b93 vvconfig: Stop resetting device selections to defaults. Fixes #13044.
Jakub Adam <jakub.adam@ktknet.cz>
parents: 30752
diff changeset
275 (GCompareFunc) strcmp) == NULL)
28324
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
276 purple_prefs_set_string(device_pref, g_list_next(devices)->data);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
277 widget = pidgin_prefs_dropdown_from_list(vbox, device_label,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
278 PURPLE_PREF_STRING, device_pref, devices);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
279 g_list_free(devices);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
280 gtk_widget_set_name(widget, plugin_pref);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
281 gtk_size_group_add_widget(sg, widget);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
282 gtk_misc_set_alignment(GTK_MISC(widget), 0, 0.5);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
283
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
284 purple_prefs_connect_callback(vbox, plugin_pref,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
285 device_changed_cb, sg);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
286 g_signal_connect_swapped(vbox, "destroy",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
287 G_CALLBACK(purple_prefs_disconnect_by_handle), vbox);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
288 }
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
289
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
290 static GtkWidget *
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
291 get_plugin_config_frame(PurplePlugin *plugin) {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
292 GtkWidget *notebook, *vbox_audio, *vbox_video;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
293 GtkSizeGroup *sg;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
294
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
295 notebook = gtk_notebook_new();
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
296 gtk_container_set_border_width(GTK_CONTAINER(notebook),
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
297 PIDGIN_HIG_BORDER);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
298 gtk_widget_show(notebook);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
299
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
300 vbox_audio = gtk_vbox_new(FALSE, PIDGIN_HIG_CAT_SPACE);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
301 vbox_video = gtk_vbox_new(FALSE, PIDGIN_HIG_CAT_SPACE);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
302 gtk_notebook_append_page(GTK_NOTEBOOK(notebook),
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
303 vbox_audio, gtk_label_new(_("Audio")));
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
304 gtk_notebook_append_page(GTK_NOTEBOOK(notebook),
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
305 vbox_video, gtk_label_new(_("Video")));
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
306 gtk_container_set_border_width(GTK_CONTAINER (vbox_audio),
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
307 PIDGIN_HIG_BORDER);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
308 gtk_container_set_border_width(GTK_CONTAINER (vbox_video),
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
309 PIDGIN_HIG_BORDER);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
310
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
311 gtk_widget_show(vbox_audio);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
312 gtk_widget_show(vbox_video);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
313
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
314 sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
315
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
316 get_plugin_frame(vbox_audio, sg, _("Output"), _("_Plugin"), AUDIO_SINK_PLUGINS,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
317 "/plugins/core/vvconfig/audio/sink/plugin", _("_Device"),
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
318 "/plugins/core/vvconfig/audio/sink/device");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
319 get_plugin_frame(vbox_audio, sg, _("Input"), _("P_lugin"), AUDIO_SRC_PLUGINS,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
320 "/plugins/core/vvconfig/audio/src/plugin", _("D_evice"),
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
321 "/plugins/core/vvconfig/audio/src/device");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
322
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
323 get_plugin_frame(vbox_video, sg, _("Output"), _("_Plugin"), VIDEO_SINK_PLUGINS,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
324 "/plugins/gtk/vvconfig/video/sink/plugin", _("_Device"),
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
325 "/plugins/gtk/vvconfig/video/sink/device");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
326 get_plugin_frame(vbox_video, sg, _("Input"), _("P_lugin"), VIDEO_SRC_PLUGINS,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
327 "/plugins/core/vvconfig/video/src/plugin", _("D_evice"),
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
328 "/plugins/core/vvconfig/video/src/device");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
329
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
330 return notebook;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
331 }
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
332
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
333 static GstElement *
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
334 create_video_src(PurpleMedia *media,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
335 const gchar *session_id, const gchar *participant)
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
336 {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
337 const gchar *plugin = purple_prefs_get_string(
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
338 "/plugins/core/vvconfig/video/src/plugin");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
339 const gchar *device = purple_prefs_get_string(
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
340 "/plugins/core/vvconfig/video/src/device");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
341 GstElement *ret;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
342
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
343 if (plugin[0] == '\0')
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
344 return purple_media_element_info_call_create(old_video_src,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
345 media, session_id, participant);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
346
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
347 ret = gst_element_factory_make(plugin, "vvconfig-videosrc");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
348 if (device[0] != '\0')
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
349 g_object_set(G_OBJECT(ret), "device", device, NULL);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
350 if (!strcmp(plugin, "videotestsrc"))
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
351 g_object_set(G_OBJECT(ret), "is-live", 1, NULL);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
352 return ret;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
353 }
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
354
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
355 static GstElement *
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
356 create_video_sink(PurpleMedia *media,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
357 const gchar *session_id, const gchar *participant)
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
358 {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
359 const gchar *plugin = purple_prefs_get_string(
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
360 "/plugins/gtk/vvconfig/video/sink/plugin");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
361 const gchar *device = purple_prefs_get_string(
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
362 "/plugins/gtk/vvconfig/video/sink/device");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
363 GstElement *ret;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
364
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
365 if (plugin[0] == '\0')
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
366 return purple_media_element_info_call_create(old_video_sink,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
367 media, session_id, participant);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
368
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
369 ret = gst_element_factory_make(plugin, NULL);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
370 if (device[0] != '\0')
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
371 g_object_set(G_OBJECT(ret), "device", device, NULL);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
372 return ret;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
373 }
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
374
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
375 static GstElement *
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
376 create_audio_src(PurpleMedia *media,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
377 const gchar *session_id, const gchar *participant)
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
378 {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
379 const gchar *plugin = purple_prefs_get_string(
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
380 "/plugins/core/vvconfig/audio/src/plugin");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
381 const gchar *device = purple_prefs_get_string(
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
382 "/plugins/core/vvconfig/audio/src/device");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
383 GstElement *ret;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
384
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
385 if (plugin[0] == '\0')
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
386 return purple_media_element_info_call_create(old_audio_src,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
387 media, session_id, participant);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
388
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
389 ret = gst_element_factory_make(plugin, NULL);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
390 if (device[0] != '\0')
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
391 g_object_set(G_OBJECT(ret), "device", device, NULL);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
392 return ret;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
393 }
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
394
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
395 static GstElement *
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
396 create_audio_sink(PurpleMedia *media,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
397 const gchar *session_id, const gchar *participant)
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
398 {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
399 const gchar *plugin = purple_prefs_get_string(
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
400 "/plugins/core/vvconfig/audio/sink/plugin");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
401 const gchar *device = purple_prefs_get_string(
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
402 "/plugins/core/vvconfig/audio/sink/device");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
403 GstElement *ret;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
404
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
405 if (plugin[0] == '\0')
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
406 return purple_media_element_info_call_create(old_audio_sink,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
407 media, session_id, participant);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
408
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
409 ret = gst_element_factory_make(plugin, NULL);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
410 if (device[0] != '\0')
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
411 g_object_set(G_OBJECT(ret), "device", device, NULL);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
412 return ret;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
413 }
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
414
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
415 static void
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
416 set_element_info_cond(PurpleMediaElementInfo *old_info,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
417 PurpleMediaElementInfo *new_info, const gchar *id)
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
418 {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
419 gchar *element_id = purple_media_element_info_get_id(old_info);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
420 if (!strcmp(element_id, id))
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
421 purple_media_manager_set_active_element(
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
422 purple_media_manager_get(), new_info);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
423 g_free(element_id);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
424 }
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
425
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
426 static gboolean
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
427 plugin_load(PurplePlugin *plugin)
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
428 {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
429 PurpleMediaManager *manager;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
430 PurpleMediaElementInfo *video_src, *video_sink,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
431 *audio_src, *audio_sink;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
432
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
433 /* Disable the plugin if the UI doesn't support VV */
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
434 if (purple_media_manager_get_ui_caps(purple_media_manager_get()) ==
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
435 PURPLE_MEDIA_CAPS_NONE)
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
436 return FALSE;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
437
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
438 purple_prefs_add_none("/plugins/core/vvconfig");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
439 purple_prefs_add_none("/plugins/core/vvconfig/audio");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
440 purple_prefs_add_none("/plugins/core/vvconfig/audio/src");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
441 purple_prefs_add_string("/plugins/core/vvconfig/audio/src/plugin", "");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
442 purple_prefs_add_string("/plugins/core/vvconfig/audio/src/device", "");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
443 purple_prefs_add_none("/plugins/core/vvconfig/audio/sink");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
444 purple_prefs_add_string("/plugins/core/vvconfig/audio/sink/plugin", "");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
445 purple_prefs_add_string("/plugins/core/vvconfig/audio/sink/device", "");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
446 purple_prefs_add_none("/plugins/core/vvconfig/video");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
447 purple_prefs_add_none("/plugins/core/vvconfig/video/src");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
448 purple_prefs_add_string("/plugins/core/vvconfig/video/src/plugin", "");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
449 purple_prefs_add_string("/plugins/core/vvconfig/video/src/device", "");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
450 purple_prefs_add_none("/plugins/gtk/vvconfig");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
451 purple_prefs_add_none("/plugins/gtk/vvconfig/video");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
452 purple_prefs_add_none("/plugins/gtk/vvconfig/video/sink");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
453 purple_prefs_add_string("/plugins/gtk/vvconfig/video/sink/plugin", "");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
454 purple_prefs_add_string("/plugins/gtk/vvconfig/video/sink/device", "");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
455
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
456 video_src = g_object_new(PURPLE_TYPE_MEDIA_ELEMENT_INFO,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
457 "id", "vvconfig-videosrc",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
458 "name", "VV Conf Plugin Video Source",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
459 "type", PURPLE_MEDIA_ELEMENT_VIDEO
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
460 | PURPLE_MEDIA_ELEMENT_SRC
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
461 | PURPLE_MEDIA_ELEMENT_ONE_SRC
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
462 | PURPLE_MEDIA_ELEMENT_UNIQUE,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
463 "create-cb", create_video_src, NULL);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
464 video_sink = g_object_new(PURPLE_TYPE_MEDIA_ELEMENT_INFO,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
465 "id", "vvconfig-videosink",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
466 "name", "VV Conf Plugin Video Sink",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
467 "type", PURPLE_MEDIA_ELEMENT_VIDEO
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
468 | PURPLE_MEDIA_ELEMENT_SINK
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
469 | PURPLE_MEDIA_ELEMENT_ONE_SINK,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
470 "create-cb", create_video_sink, NULL);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
471 audio_src = g_object_new(PURPLE_TYPE_MEDIA_ELEMENT_INFO,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
472 "id", "vvconfig-audiosrc",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
473 "name", "VV Conf Plugin Audio Source",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
474 "type", PURPLE_MEDIA_ELEMENT_AUDIO
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
475 | PURPLE_MEDIA_ELEMENT_SRC
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
476 | PURPLE_MEDIA_ELEMENT_ONE_SRC
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
477 | PURPLE_MEDIA_ELEMENT_UNIQUE,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
478 "create-cb", create_audio_src, NULL);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
479 audio_sink = g_object_new(PURPLE_TYPE_MEDIA_ELEMENT_INFO,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
480 "id", "vvconfig-audiosink",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
481 "name", "VV Conf Plugin Audio Sink",
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
482 "type", PURPLE_MEDIA_ELEMENT_AUDIO
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
483 | PURPLE_MEDIA_ELEMENT_SINK
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
484 | PURPLE_MEDIA_ELEMENT_ONE_SINK,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
485 "create-cb", create_audio_sink, NULL);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
486
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
487 purple_debug_info("gtkmedia", "Registering media element types\n");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
488 manager = purple_media_manager_get();
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
489
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
490 old_video_src = purple_media_manager_get_active_element(manager,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
491 PURPLE_MEDIA_ELEMENT_VIDEO | PURPLE_MEDIA_ELEMENT_SRC);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
492 old_video_sink = purple_media_manager_get_active_element(manager,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
493 PURPLE_MEDIA_ELEMENT_VIDEO | PURPLE_MEDIA_ELEMENT_SINK);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
494 old_audio_src = purple_media_manager_get_active_element(manager,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
495 PURPLE_MEDIA_ELEMENT_AUDIO | PURPLE_MEDIA_ELEMENT_SRC);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
496 old_audio_sink = purple_media_manager_get_active_element(manager,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
497 PURPLE_MEDIA_ELEMENT_AUDIO | PURPLE_MEDIA_ELEMENT_SINK);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
498
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
499 set_element_info_cond(old_video_src, video_src, "pidgindefaultvideosrc");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
500 set_element_info_cond(old_video_sink, video_sink, "pidgindefaultvideosink");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
501 set_element_info_cond(old_audio_src, audio_src, "pidgindefaultaudiosrc");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
502 set_element_info_cond(old_audio_sink, audio_sink, "pidgindefaultaudiosink");
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
503
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
504 return TRUE;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
505 }
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
506
30745
8346d194d563 media: Added a plugin action menu for the voice and video settings plugin.
Marcus Lundblad <malu@pidgin.im>
parents: 28324
diff changeset
507 static void
32394
f883709bdba4 compiles using GTK+ 3 from git, beware it does not yet run, in fact it crashes...
Marcus Lundblad <malu@pidgin.im>
parents: 30752
diff changeset
508 config_destroy(GtkWidget *w, gpointer nul)
30745
8346d194d563 media: Added a plugin action menu for the voice and video settings plugin.
Marcus Lundblad <malu@pidgin.im>
parents: 28324
diff changeset
509 {
8346d194d563 media: Added a plugin action menu for the voice and video settings plugin.
Marcus Lundblad <malu@pidgin.im>
parents: 28324
diff changeset
510 purple_debug_info("vvconfig", "closing vv configuration window\n");
8346d194d563 media: Added a plugin action menu for the voice and video settings plugin.
Marcus Lundblad <malu@pidgin.im>
parents: 28324
diff changeset
511 window = NULL;
8346d194d563 media: Added a plugin action menu for the voice and video settings plugin.
Marcus Lundblad <malu@pidgin.im>
parents: 28324
diff changeset
512 }
8346d194d563 media: Added a plugin action menu for the voice and video settings plugin.
Marcus Lundblad <malu@pidgin.im>
parents: 28324
diff changeset
513
8346d194d563 media: Added a plugin action menu for the voice and video settings plugin.
Marcus Lundblad <malu@pidgin.im>
parents: 28324
diff changeset
514 static void
32394
f883709bdba4 compiles using GTK+ 3 from git, beware it does not yet run, in fact it crashes...
Marcus Lundblad <malu@pidgin.im>
parents: 30752
diff changeset
515 config_close(GtkWidget *w, gpointer nul)
30746
ed1f99ec4954 media: Add a close button to the stand-alone video configuration window. Adjusted title
Marcus Lundblad <malu@pidgin.im>
parents: 30745
diff changeset
516 {
ed1f99ec4954 media: Add a close button to the stand-alone video configuration window. Adjusted title
Marcus Lundblad <malu@pidgin.im>
parents: 30745
diff changeset
517 gtk_widget_destroy(GTK_WIDGET(window));
ed1f99ec4954 media: Add a close button to the stand-alone video configuration window. Adjusted title
Marcus Lundblad <malu@pidgin.im>
parents: 30745
diff changeset
518 }
ed1f99ec4954 media: Add a close button to the stand-alone video configuration window. Adjusted title
Marcus Lundblad <malu@pidgin.im>
parents: 30745
diff changeset
519
31623
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
520 typedef GtkWidget *(*FrameCreateCb)(PurplePlugin *plugin);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
521
30746
ed1f99ec4954 media: Add a close button to the stand-alone video configuration window. Adjusted title
Marcus Lundblad <malu@pidgin.im>
parents: 30745
diff changeset
522 static void
30745
8346d194d563 media: Added a plugin action menu for the voice and video settings plugin.
Marcus Lundblad <malu@pidgin.im>
parents: 28324
diff changeset
523 show_config(PurplePluginAction *action)
8346d194d563 media: Added a plugin action menu for the voice and video settings plugin.
Marcus Lundblad <malu@pidgin.im>
parents: 28324
diff changeset
524 {
8346d194d563 media: Added a plugin action menu for the voice and video settings plugin.
Marcus Lundblad <malu@pidgin.im>
parents: 28324
diff changeset
525 if (!window) {
31623
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
526 FrameCreateCb create_frame = action->user_data;
30746
ed1f99ec4954 media: Add a close button to the stand-alone video configuration window. Adjusted title
Marcus Lundblad <malu@pidgin.im>
parents: 30745
diff changeset
527 GtkWidget *vbox = gtk_vbox_new(FALSE, PIDGIN_HIG_BORDER);
ed1f99ec4954 media: Add a close button to the stand-alone video configuration window. Adjusted title
Marcus Lundblad <malu@pidgin.im>
parents: 30745
diff changeset
528 GtkWidget *hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BORDER);
31623
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
529 GtkWidget *config_frame = create_frame(NULL);
30746
ed1f99ec4954 media: Add a close button to the stand-alone video configuration window. Adjusted title
Marcus Lundblad <malu@pidgin.im>
parents: 30745
diff changeset
530 GtkWidget *close = gtk_button_new_from_stock(GTK_STOCK_CLOSE);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 31279
diff changeset
531
30746
ed1f99ec4954 media: Add a close button to the stand-alone video configuration window. Adjusted title
Marcus Lundblad <malu@pidgin.im>
parents: 30745
diff changeset
532 gtk_container_add(GTK_CONTAINER(vbox), config_frame);
ed1f99ec4954 media: Add a close button to the stand-alone video configuration window. Adjusted title
Marcus Lundblad <malu@pidgin.im>
parents: 30745
diff changeset
533 gtk_container_add(GTK_CONTAINER(vbox), hbox);
31623
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
534 window = pidgin_create_window(action->label,
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
535 PIDGIN_HIG_BORDER, NULL, FALSE);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 31279
diff changeset
536 g_signal_connect(G_OBJECT(window), "destroy",
30745
8346d194d563 media: Added a plugin action menu for the voice and video settings plugin.
Marcus Lundblad <malu@pidgin.im>
parents: 28324
diff changeset
537 G_CALLBACK(config_destroy), NULL);
30746
ed1f99ec4954 media: Add a close button to the stand-alone video configuration window. Adjusted title
Marcus Lundblad <malu@pidgin.im>
parents: 30745
diff changeset
538 g_signal_connect(G_OBJECT(close), "clicked",
ed1f99ec4954 media: Add a close button to the stand-alone video configuration window. Adjusted title
Marcus Lundblad <malu@pidgin.im>
parents: 30745
diff changeset
539 G_CALLBACK(config_close), NULL);
ed1f99ec4954 media: Add a close button to the stand-alone video configuration window. Adjusted title
Marcus Lundblad <malu@pidgin.im>
parents: 30745
diff changeset
540 gtk_box_pack_end(GTK_BOX(hbox), close, FALSE, FALSE, PIDGIN_HIG_BORDER);
ed1f99ec4954 media: Add a close button to the stand-alone video configuration window. Adjusted title
Marcus Lundblad <malu@pidgin.im>
parents: 30745
diff changeset
541 gtk_container_add(GTK_CONTAINER(window), vbox);
ed1f99ec4954 media: Add a close button to the stand-alone video configuration window. Adjusted title
Marcus Lundblad <malu@pidgin.im>
parents: 30745
diff changeset
542 gtk_widget_show(GTK_WIDGET(close));
ed1f99ec4954 media: Add a close button to the stand-alone video configuration window. Adjusted title
Marcus Lundblad <malu@pidgin.im>
parents: 30745
diff changeset
543 gtk_widget_show(GTK_WIDGET(vbox));
ed1f99ec4954 media: Add a close button to the stand-alone video configuration window. Adjusted title
Marcus Lundblad <malu@pidgin.im>
parents: 30745
diff changeset
544 gtk_widget_show(GTK_WIDGET(hbox));
30745
8346d194d563 media: Added a plugin action menu for the voice and video settings plugin.
Marcus Lundblad <malu@pidgin.im>
parents: 28324
diff changeset
545 }
30746
ed1f99ec4954 media: Add a close button to the stand-alone video configuration window. Adjusted title
Marcus Lundblad <malu@pidgin.im>
parents: 30745
diff changeset
546 gtk_window_present(GTK_WINDOW(window));
30745
8346d194d563 media: Added a plugin action menu for the voice and video settings plugin.
Marcus Lundblad <malu@pidgin.im>
parents: 28324
diff changeset
547 }
30752
86247e9da004 Spelling and spacing.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30746
diff changeset
548
31623
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
549 static GstElement *
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
550 create_pipeline()
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
551 {
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
552 GstElement *pipeline = gst_pipeline_new("voicetest");
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
553 GstElement *src = create_audio_src(NULL, NULL, NULL);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
554 GstElement *sink = create_audio_sink(NULL, NULL, NULL);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
555 GstElement *volume = gst_element_factory_make("volume", "volume");
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
556 GstElement *level = gst_element_factory_make("level", "level");
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
557 GstElement *valve = gst_element_factory_make("valve", "valve");
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
558
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
559 gst_bin_add_many(GST_BIN(pipeline), src, volume, level, valve, sink, NULL);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
560 gst_element_link_many(src, volume, level, valve, sink, NULL);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
561
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
562 gst_element_set_state(GST_ELEMENT(pipeline), GST_STATE_PLAYING);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
563
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
564 return pipeline;
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
565 }
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
566
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
567 static void
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
568 on_volume_change_cb(GtkRange *range, GstBin *pipeline)
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
569 {
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
570 GstElement *volume;
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
571
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
572 g_return_if_fail(pipeline != NULL);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
573
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
574 volume = gst_bin_get_by_name(pipeline, "volume");
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
575 g_object_set(volume, "volume", gtk_range_get_value(range) / 10.0, NULL);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
576 }
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
577
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
578 static gdouble
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
579 gst_msg_db_to_percent(GstMessage *msg, gchar *value_name)
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
580 {
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
581 const GValue *list;
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
582 const GValue *value;
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
583 gdouble value_db;
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
584 gdouble percent;
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
585
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
586 list = gst_structure_get_value(
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
587 gst_message_get_structure(msg), value_name);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
588 value = gst_value_list_get_value(list, 0);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
589 value_db = g_value_get_double(value);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
590 percent = pow(10, value_db / 20);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
591 return (percent > 1.0) ? 1.0 : percent;
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
592 }
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
593
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
594 typedef struct
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
595 {
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
596 GtkProgressBar *level;
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
597 GtkRange *threshold;
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
598 } BusCbCtx;
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
599
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
600 static gboolean
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
601 gst_bus_cb(GstBus *bus, GstMessage *msg, BusCbCtx *ctx)
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
602 {
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
603 if (GST_MESSAGE_TYPE(msg) == GST_MESSAGE_ELEMENT &&
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
604 gst_structure_has_name(msg->structure, "level")) {
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
605
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
606 GstElement *src = GST_ELEMENT(GST_MESSAGE_SRC(msg));
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
607 gchar *name = gst_element_get_name(src);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
608
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
609 if (!strcmp(name, "level")) {
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
610 gdouble percent;
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
611 gdouble threshold;
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
612 GstElement *valve;
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
613
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
614 percent = gst_msg_db_to_percent(msg, "rms");
32751
24798e6f3c3a The function gst_msg_db_to_percent already retyrns a number between
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32748
diff changeset
615 gtk_progress_bar_set_fraction(ctx->level, percent);
31623
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
616
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
617 percent = gst_msg_db_to_percent(msg, "decay");
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
618 threshold = gtk_range_get_value(ctx->threshold) / 100.0;
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
619 valve = gst_bin_get_by_name(GST_BIN(GST_ELEMENT_PARENT(src)), "valve");
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
620 g_object_set(valve, "drop", (percent < threshold), NULL);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
621 g_object_set(ctx->level,
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
622 "text", (percent < threshold) ? _("DROP") : " ", NULL);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
623 }
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
624
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
625 g_free(name);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
626 }
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
627
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
628 return TRUE;
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
629 }
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
630
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
631 static void
32908
d97dff4ffe5c Pluck one more fix.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31681
diff changeset
632 voice_test_frame_destroy_cb(GtkWidget *w, GstElement *pipeline)
31623
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
633 {
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
634 g_return_if_fail(GST_IS_ELEMENT(pipeline));
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
635
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
636 gst_element_set_state(pipeline, GST_STATE_NULL);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
637 gst_object_unref(pipeline);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
638 }
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
639
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
640 static void
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
641 volume_scale_destroy_cb(GtkRange *volume, gpointer nul)
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
642 {
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
643 purple_prefs_set_int("/purple/media/audio/volume/input",
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
644 gtk_range_get_value(volume));
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
645 }
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
646
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
647 static gchar*
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
648 threshold_value_format_cb(GtkScale *scale, gdouble value)
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
649 {
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
650 return g_strdup_printf ("%.*f%%", gtk_scale_get_digits(scale), value);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
651 }
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
652
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
653 static void
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
654 threshold_scale_destroy_cb(GtkRange *threshold, gpointer nul)
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
655 {
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
656 purple_prefs_set_int("/purple/media/audio/silence_threshold",
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
657 gtk_range_get_value(threshold));
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
658 }
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
659
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
660 static GtkWidget *
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
661 get_voice_test_frame(PurplePlugin *plugin)
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
662 {
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
663 GtkWidget *vbox = gtk_vbox_new(FALSE, PIDGIN_HIG_BORDER);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
664 GtkWidget *level = gtk_progress_bar_new();
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
665 GtkWidget *volume = gtk_hscale_new_with_range(0, 100, 1);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
666 GtkWidget *threshold = gtk_hscale_new_with_range(0, 100, 1);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
667 GtkWidget *label;
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
668 GtkTable *table = GTK_TABLE(gtk_table_new(2, 2, FALSE));
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
669
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
670 GstElement *pipeline;
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
671 GstBus *bus;
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
672 BusCbCtx *ctx;
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
673
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
674 g_object_set(vbox, "width-request", 500, NULL);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
675
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
676 gtk_table_set_row_spacings(table, PIDGIN_HIG_BOX_SPACE);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
677 gtk_table_set_col_spacings(table, PIDGIN_HIG_BOX_SPACE);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
678
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
679 label = gtk_label_new(_("Volume:"));
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
680 g_object_set(label, "xalign", 0.0, NULL);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
681 gtk_table_attach(table, label, 0, 1, 0, 1, GTK_FILL, 0, 0, 0);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
682 gtk_table_attach_defaults(table, volume, 1, 2, 0, 1);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
683 label = gtk_label_new(_("Silence threshold:"));
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
684 g_object_set(label, "xalign", 0.0, "yalign", 1.0, NULL);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
685 gtk_table_attach(table, label, 0, 1, 1, 2, GTK_FILL, GTK_FILL, 0, 0);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
686 gtk_table_attach_defaults(table, threshold, 1, 2, 1, 2);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
687
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
688 gtk_container_add(GTK_CONTAINER(vbox), level);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
689 gtk_container_add(GTK_CONTAINER(vbox), GTK_WIDGET(table));
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
690 gtk_widget_show_all(vbox);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
691
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
692 pipeline = create_pipeline();
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
693 bus = gst_pipeline_get_bus(GST_PIPELINE(pipeline));
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
694 gst_bus_add_signal_watch(bus);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
695 ctx = g_new(BusCbCtx, 1);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
696 ctx->level = GTK_PROGRESS_BAR(level);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
697 ctx->threshold = GTK_RANGE(threshold);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
698 g_signal_connect_data(bus, "message", G_CALLBACK(gst_bus_cb),
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
699 ctx, (GClosureNotify)g_free, 0);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
700 gst_object_unref(bus);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
701
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
702 g_signal_connect(volume, "value-changed",
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
703 (GCallback)on_volume_change_cb, pipeline);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
704
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
705 gtk_range_set_value(GTK_RANGE(volume),
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
706 purple_prefs_get_int("/purple/media/audio/volume/input"));
32908
d97dff4ffe5c Pluck one more fix.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31681
diff changeset
707 gtk_scale_set_draw_value(GTK_SCALE(volume), FALSE);
31623
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
708
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
709 gtk_range_set_value(GTK_RANGE(threshold),
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
710 purple_prefs_get_int("/purple/media/audio/silence_threshold"));
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
711
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
712 g_signal_connect(vbox, "destroy",
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
713 G_CALLBACK(voice_test_frame_destroy_cb), pipeline);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
714 g_signal_connect(volume, "destroy",
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
715 G_CALLBACK(volume_scale_destroy_cb), NULL);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
716 g_signal_connect(threshold, "format-value",
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
717 G_CALLBACK(threshold_value_format_cb), NULL);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
718 g_signal_connect(threshold, "destroy",
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
719 G_CALLBACK(threshold_scale_destroy_cb), NULL);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
720
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
721 return vbox;
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
722 }
30752
86247e9da004 Spelling and spacing.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30746
diff changeset
723
30745
8346d194d563 media: Added a plugin action menu for the voice and video settings plugin.
Marcus Lundblad <malu@pidgin.im>
parents: 28324
diff changeset
724 static GList *
8346d194d563 media: Added a plugin action menu for the voice and video settings plugin.
Marcus Lundblad <malu@pidgin.im>
parents: 28324
diff changeset
725 actions(PurplePlugin *plugin, gpointer context)
8346d194d563 media: Added a plugin action menu for the voice and video settings plugin.
Marcus Lundblad <malu@pidgin.im>
parents: 28324
diff changeset
726 {
8346d194d563 media: Added a plugin action menu for the voice and video settings plugin.
Marcus Lundblad <malu@pidgin.im>
parents: 28324
diff changeset
727 GList *l = NULL;
8346d194d563 media: Added a plugin action menu for the voice and video settings plugin.
Marcus Lundblad <malu@pidgin.im>
parents: 28324
diff changeset
728 PurplePluginAction *act = NULL;
8346d194d563 media: Added a plugin action menu for the voice and video settings plugin.
Marcus Lundblad <malu@pidgin.im>
parents: 28324
diff changeset
729
31623
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
730 act = purple_plugin_action_new(_("Input and Output Settings"),
30745
8346d194d563 media: Added a plugin action menu for the voice and video settings plugin.
Marcus Lundblad <malu@pidgin.im>
parents: 28324
diff changeset
731 show_config);
31623
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
732 act->user_data = get_plugin_config_frame;
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
733 l = g_list_append(l, act);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
734
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
735 act = purple_plugin_action_new(_("Microphone Test"),
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
736 show_config);
628b086c4167 This patch adds to Pidgin's vvconfig plugin a simple dialog, where user can test
Jakub Adam <jakub.adam@ktknet.cz>
parents: 31369
diff changeset
737 act->user_data = get_voice_test_frame;
30745
8346d194d563 media: Added a plugin action menu for the voice and video settings plugin.
Marcus Lundblad <malu@pidgin.im>
parents: 28324
diff changeset
738 l = g_list_append(l, act);
8346d194d563 media: Added a plugin action menu for the voice and video settings plugin.
Marcus Lundblad <malu@pidgin.im>
parents: 28324
diff changeset
739
8346d194d563 media: Added a plugin action menu for the voice and video settings plugin.
Marcus Lundblad <malu@pidgin.im>
parents: 28324
diff changeset
740 return l;
8346d194d563 media: Added a plugin action menu for the voice and video settings plugin.
Marcus Lundblad <malu@pidgin.im>
parents: 28324
diff changeset
741 }
8346d194d563 media: Added a plugin action menu for the voice and video settings plugin.
Marcus Lundblad <malu@pidgin.im>
parents: 28324
diff changeset
742
28324
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
743 static gboolean
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
744 plugin_unload(PurplePlugin *plugin)
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
745 {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
746 PurpleMediaManager *manager = purple_media_manager_get();
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
747 purple_media_manager_set_active_element(manager, old_video_src);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
748 purple_media_manager_set_active_element(manager, old_video_sink);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
749 purple_media_manager_set_active_element(manager, old_audio_src);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
750 purple_media_manager_set_active_element(manager, old_audio_sink);
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
751 return TRUE;
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
752 }
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
753
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
754 static PidginPluginUiInfo ui_info = {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
755 get_plugin_config_frame,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
756 0, /* page_num (Reserved) */
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
757 /* Padding */
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
758 NULL,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
759 NULL,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
760 NULL,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
761 NULL
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
762 };
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
763
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
764 static PurplePluginInfo info =
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
765 {
30752
86247e9da004 Spelling and spacing.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30746
diff changeset
766 PURPLE_PLUGIN_MAGIC, /**< magic */
86247e9da004 Spelling and spacing.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30746
diff changeset
767 PURPLE_MAJOR_VERSION, /**< major version */
86247e9da004 Spelling and spacing.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30746
diff changeset
768 PURPLE_MINOR_VERSION, /**< minor version */
86247e9da004 Spelling and spacing.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30746
diff changeset
769 PURPLE_PLUGIN_STANDARD, /**< type */
86247e9da004 Spelling and spacing.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30746
diff changeset
770 PIDGIN_PLUGIN_TYPE, /**< ui_requirement */
86247e9da004 Spelling and spacing.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30746
diff changeset
771 0, /**< flags */
86247e9da004 Spelling and spacing.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30746
diff changeset
772 NULL, /**< dependencies */
86247e9da004 Spelling and spacing.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30746
diff changeset
773 PURPLE_PRIORITY_DEFAULT, /**< priority */
28324
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
774
30752
86247e9da004 Spelling and spacing.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30746
diff changeset
775 "gtk-maiku-vvconfig", /**< id */
86247e9da004 Spelling and spacing.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30746
diff changeset
776 N_("Voice/Video Settings"), /**< name */
86247e9da004 Spelling and spacing.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30746
diff changeset
777 DISPLAY_VERSION, /**< version */
86247e9da004 Spelling and spacing.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30746
diff changeset
778 N_("Configure your microphone and webcam."), /**< summary */
28324
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
779 N_("Configure microphone and webcam "
30752
86247e9da004 Spelling and spacing.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30746
diff changeset
780 "settings for voice/video calls."), /**< description */
86247e9da004 Spelling and spacing.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30746
diff changeset
781 "Mike Ruprecht <cmaiku@gmail.com>", /**< author */
86247e9da004 Spelling and spacing.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30746
diff changeset
782 PURPLE_WEBSITE, /**< homepage */
28324
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
783
30752
86247e9da004 Spelling and spacing.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30746
diff changeset
784 plugin_load, /**< load */
86247e9da004 Spelling and spacing.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30746
diff changeset
785 plugin_unload, /**< unload */
86247e9da004 Spelling and spacing.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30746
diff changeset
786 NULL, /**< destroy */
28324
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
787
30752
86247e9da004 Spelling and spacing.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30746
diff changeset
788 &ui_info, /**< ui_info */
86247e9da004 Spelling and spacing.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30746
diff changeset
789 NULL, /**< extra_info */
86247e9da004 Spelling and spacing.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30746
diff changeset
790 NULL, /**< prefs_info */
86247e9da004 Spelling and spacing.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30746
diff changeset
791 actions, /**< actions */
28324
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
792
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
793 /* padding */
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
794 NULL,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
795 NULL,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
796 NULL,
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
797 NULL
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
798 };
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
799
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
800 static void
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
801 init_plugin(PurplePlugin *plugin) {
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
802 }
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
803
f9ef953c00bf Add the vvconfig plugin. It allows you to choose different microphones,
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
804 PURPLE_INIT_PLUGIN(vvconfig, init_plugin, info)

mercurial