summaryrefslogtreecommitdiff
path: root/gst-mixer-applet/load.c
diff options
context:
space:
mode:
Diffstat (limited to 'gst-mixer-applet/load.c')
-rw-r--r--gst-mixer-applet/load.c181
1 files changed, 0 insertions, 181 deletions
diff --git a/gst-mixer-applet/load.c b/gst-mixer-applet/load.c
deleted file mode 100644
index 684a3a5..0000000
--- a/gst-mixer-applet/load.c
+++ /dev/null
@@ -1,181 +0,0 @@
-/* MATE Volume Applet
- * Copyright (C) 2004 Ronald Bultje <[email protected]>
- *
- * load.c: applet boilerplate code
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <string.h>
-
-#include <glib.h>
-#include <gst/audio/mixerutils.h>
-
-#include "applet.h"
-
-typedef struct _FilterHelper {
- GList *names_list;
- gint count;
-} FilterHelper;
-
-
-static gboolean
-_filter_func (GstMixer *mixer, gpointer data) {
- GstElementFactory *factory;
- const gchar *longname;
- FilterHelper *helper = (FilterHelper *)data;
- gchar *device = NULL;
- gchar *name, *original;
-
- /* fetch name */
- if (g_object_class_find_property (G_OBJECT_GET_CLASS (G_OBJECT (mixer)), "device-name")) {
- g_object_get (mixer, "device-name", &device, NULL);
- GST_DEBUG ("device-name: %s", GST_STR_NULL (device));
- } else {
- GST_DEBUG ("no 'device-name' property: device name unknown");
- }
-
- factory = gst_element_get_factory (GST_ELEMENT (mixer));
- longname = gst_element_factory_get_longname (factory);
-
- if (device) {
- GList *list;
- gint duplicates = 0;
-
- name = g_strdup_printf ("%s (%s)", device, longname);
- g_free (device);
-
- /* Devices are sorted by names, we must ensure that the names are unique */
- for (list = helper->names_list; list != NULL; list = list->next) {
- if (strcmp ((const gchar *) list->data, name) == 0)
- duplicates++;
- }
-
- if (duplicates > 0) {
- /*
- * There is a duplicate name, so append an index to make the name
- * unique within the list
- */
- original = name;
- name = g_strdup_printf("%s #%d", name, duplicates + 1);
- } else {
- original = g_strdup(name);
- }
- } else {
- gchar *title;
-
- (helper->count)++;
-
- title = g_strdup_printf (_("Unknown Volume Control %d"), helper->count);
- name = g_strdup_printf ("%s (%s)", title, longname);
- original = g_strdup(name);
- g_free (title);
- }
-
- helper->names_list = g_list_prepend (helper->names_list, name);
-
- GST_DEBUG ("Adding '%s' to the list of available mixers", name);
-
- g_object_set_data_full (G_OBJECT (mixer),
- "mate-volume-applet-name",
- name,
- (GDestroyNotify) g_free);
-
- /* Is this even used anywhere? */
- g_object_set_data_full (G_OBJECT(mixer),
- "mate-volume-applet-origname",
- original,
- (GDestroyNotify) g_free);
-
- name = NULL; /* no need to free, passed ownership to object data */
- original = NULL; /* no need to free, passed ownership to object data */
-
- gst_element_set_state (GST_ELEMENT (mixer), GST_STATE_NULL);
-
- return TRUE;
-}
-
-GList *
-mate_volume_applet_create_mixer_collection (void)
-{
- FilterHelper helper;
- GList *mixer_list;
-
- helper.count = 0;
- helper.names_list = NULL;
-
- mixer_list = gst_audio_default_registry_mixer_filter(_filter_func, FALSE, &helper);
- g_list_free (helper.names_list);
-
- return mixer_list;
-}
-
-static gboolean
-mate_volume_applet_toplevel_configure_handler (GtkWidget *widget,
- GdkEventConfigure *event,
- gpointer data)
-{
- GList *elements;
- static gboolean init = FALSE;
-
- g_signal_handlers_disconnect_by_func (widget,
- mate_volume_applet_toplevel_configure_handler,
- data);
-
- if (!init) {
- gst_init (NULL, NULL);
- init = TRUE;
- }
-
- elements = mate_volume_applet_create_mixer_collection ();
- mate_volume_applet_setup (MATE_VOLUME_APPLET (data), elements);
-
- return FALSE;
-}
-
-static gboolean
-mate_volume_applet_factory (MatePanelApplet *applet,
- const gchar *iid,
- gpointer data)
-{
- /* we delay applet specific initialization until the applet
- * is fully registered with the panel since gst_init() can block
- * for longer than the service activation timeouts
- *
- * We use configure-event as a hook because after the applet is
- * registered with b-a-s and the panel, the panel sets size hints
- * on the applet and gives it an initial size.
- *
- * http://bugzilla.mate.org/show_bug.cgi?id=385305
- */
- g_signal_connect (gtk_widget_get_toplevel (GTK_WIDGET (applet)),
- "configure-event",
- G_CALLBACK (mate_volume_applet_toplevel_configure_handler),
- applet);
- return TRUE;
-}
-
-MATE_PANEL_APPLET_OUT_PROCESS_FACTORY (
- "MixerAppletFactory",
- MATE_TYPE_VOLUME_APPLET,
- "mixer_applet2",
- mate_volume_applet_factory,
- NULL
-)