Fixes #173035
2007-01-08 Jan Arne Petersen <jpetersen@jpetersen.org>
Fixes #173035
* configure.in: updated sound capplet requirements.
* gnome-settings-daemon/actions/Makefile.am:
* gnome-settings-daemon/actions/acme-volume-gstreamer.c:
(acme_volume_gstreamer_finalize), (acme_volume_gstreamer_set_mute),
(update_state), (acme_volume_gstreamer_get_mute),
(acme_volume_gstreamer_get_volume),
(acme_volume_gstreamer_set_volume),
(acme_volume_gstreamer_close_real), (_acme_set_mixer),
(acme_volume_gstreamer_open), (acme_volume_gstreamer_init): added
support for multiple mixer tracks. Added support for gconf device and
track selection.
* capplets/sound/Makefile.am, mixer-support.c, mixer-support.h: Add new files.
* capplets/sound/sound-properties-capplet.c: (mixer_device_combobox_changed),
(add_track_label_to_list), (mixer_tracks_selection_changed),
(update_mixer_tracks_selection), (default_mixer_tracks_notify),
(update_mixer_device_combobox), (default_mixer_device_notify),
(setup_default_mixer), (setup_dialog):
* capplets/sound/sound-properties.glade: added support for selecting mixer device and
tracks in the capplet.
svn path=/trunk/; revision=7113
2007-01-08 22:50:39 +00:00
|
|
|
/* mixer-support.c
|
|
|
|
*
|
|
|
|
* Copyright (C) 2007 Jan Arne Petersen <jap@gnome.org>
|
|
|
|
*
|
|
|
|
* This program is free software; you can redistribute it and/or modify
|
|
|
|
* it under the terms of the GNU General Public License as published by
|
|
|
|
* the Free Software Foundation; either version 2, or (at your option)
|
|
|
|
* any later version.
|
|
|
|
*
|
|
|
|
* This program 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 General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU General Public License
|
|
|
|
* along with this program; if not, write to the Free Software
|
|
|
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
|
|
|
* 02111-1307, USA.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifdef HAVE_CONFIG_H
|
|
|
|
#include "config.h"
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#include <string.h>
|
|
|
|
|
2008-11-20 18:43:38 +00:00
|
|
|
#include <glib.h>
|
Fixes #173035
2007-01-08 Jan Arne Petersen <jpetersen@jpetersen.org>
Fixes #173035
* configure.in: updated sound capplet requirements.
* gnome-settings-daemon/actions/Makefile.am:
* gnome-settings-daemon/actions/acme-volume-gstreamer.c:
(acme_volume_gstreamer_finalize), (acme_volume_gstreamer_set_mute),
(update_state), (acme_volume_gstreamer_get_mute),
(acme_volume_gstreamer_get_volume),
(acme_volume_gstreamer_set_volume),
(acme_volume_gstreamer_close_real), (_acme_set_mixer),
(acme_volume_gstreamer_open), (acme_volume_gstreamer_init): added
support for multiple mixer tracks. Added support for gconf device and
track selection.
* capplets/sound/Makefile.am, mixer-support.c, mixer-support.h: Add new files.
* capplets/sound/sound-properties-capplet.c: (mixer_device_combobox_changed),
(add_track_label_to_list), (mixer_tracks_selection_changed),
(update_mixer_tracks_selection), (default_mixer_tracks_notify),
(update_mixer_device_combobox), (default_mixer_device_notify),
(setup_default_mixer), (setup_dialog):
* capplets/sound/sound-properties.glade: added support for selecting mixer device and
tracks in the capplet.
svn path=/trunk/; revision=7113
2007-01-08 22:50:39 +00:00
|
|
|
#include <glib/gi18n.h>
|
|
|
|
#include <gst/audio/mixerutils.h>
|
|
|
|
|
2008-11-20 18:43:38 +00:00
|
|
|
#include <gtk/gtk.h>
|
Fixes #173035
2007-01-08 Jan Arne Petersen <jpetersen@jpetersen.org>
Fixes #173035
* configure.in: updated sound capplet requirements.
* gnome-settings-daemon/actions/Makefile.am:
* gnome-settings-daemon/actions/acme-volume-gstreamer.c:
(acme_volume_gstreamer_finalize), (acme_volume_gstreamer_set_mute),
(update_state), (acme_volume_gstreamer_get_mute),
(acme_volume_gstreamer_get_volume),
(acme_volume_gstreamer_set_volume),
(acme_volume_gstreamer_close_real), (_acme_set_mixer),
(acme_volume_gstreamer_open), (acme_volume_gstreamer_init): added
support for multiple mixer tracks. Added support for gconf device and
track selection.
* capplets/sound/Makefile.am, mixer-support.c, mixer-support.h: Add new files.
* capplets/sound/sound-properties-capplet.c: (mixer_device_combobox_changed),
(add_track_label_to_list), (mixer_tracks_selection_changed),
(update_mixer_tracks_selection), (default_mixer_tracks_notify),
(update_mixer_device_combobox), (default_mixer_device_notify),
(setup_default_mixer), (setup_dialog):
* capplets/sound/sound-properties.glade: added support for selecting mixer device and
tracks in the capplet.
svn path=/trunk/; revision=7113
2007-01-08 22:50:39 +00:00
|
|
|
|
|
|
|
#include "mixer-support.h"
|
|
|
|
|
|
|
|
GtkTreeModel *
|
|
|
|
create_mixer_device_tree_model (void)
|
|
|
|
{
|
|
|
|
GtkListStore *device_store;
|
|
|
|
GList *mixer_list, *l;
|
|
|
|
guint unknown = 0;
|
|
|
|
|
|
|
|
device_store = gtk_list_store_new (MIXER_DEVICE_MODEL_COLUMN_COUNT,
|
|
|
|
G_TYPE_STRING, G_TYPE_STRING, GST_TYPE_ELEMENT);
|
|
|
|
|
|
|
|
mixer_list = gst_audio_default_registry_mixer_filter(NULL, FALSE, NULL);
|
|
|
|
|
|
|
|
for (l = mixer_list; l != NULL; l = l->next) {
|
|
|
|
GstElement *mixer = GST_ELEMENT (l->data);
|
|
|
|
gchar *device_name = NULL, *device = NULL;
|
|
|
|
GstElementFactory *factory;
|
|
|
|
const gchar *longname, *factory_name;
|
|
|
|
gchar *name;
|
|
|
|
GtkTreeIter tree_iter;
|
|
|
|
|
|
|
|
gst_element_set_state (mixer, GST_STATE_READY);
|
|
|
|
|
|
|
|
/* fetch name */
|
|
|
|
if (g_object_class_find_property (G_OBJECT_GET_CLASS (G_OBJECT (mixer)), "device-name")) {
|
|
|
|
g_object_get (mixer, "device-name", &device_name, NULL);
|
|
|
|
}
|
|
|
|
if (g_object_class_find_property (G_OBJECT_GET_CLASS (G_OBJECT (mixer)), "device")) {
|
|
|
|
g_object_get (mixer, "device", &device, NULL);
|
|
|
|
}
|
|
|
|
|
|
|
|
factory = gst_element_get_factory (mixer);
|
|
|
|
longname = gst_element_factory_get_longname (factory);
|
2008-04-01 18:41:51 +00:00
|
|
|
factory_name = gst_plugin_feature_get_name (GST_PLUGIN_FEATURE (factory));
|
Fixes #173035
2007-01-08 Jan Arne Petersen <jpetersen@jpetersen.org>
Fixes #173035
* configure.in: updated sound capplet requirements.
* gnome-settings-daemon/actions/Makefile.am:
* gnome-settings-daemon/actions/acme-volume-gstreamer.c:
(acme_volume_gstreamer_finalize), (acme_volume_gstreamer_set_mute),
(update_state), (acme_volume_gstreamer_get_mute),
(acme_volume_gstreamer_get_volume),
(acme_volume_gstreamer_set_volume),
(acme_volume_gstreamer_close_real), (_acme_set_mixer),
(acme_volume_gstreamer_open), (acme_volume_gstreamer_init): added
support for multiple mixer tracks. Added support for gconf device and
track selection.
* capplets/sound/Makefile.am, mixer-support.c, mixer-support.h: Add new files.
* capplets/sound/sound-properties-capplet.c: (mixer_device_combobox_changed),
(add_track_label_to_list), (mixer_tracks_selection_changed),
(update_mixer_tracks_selection), (default_mixer_tracks_notify),
(update_mixer_device_combobox), (default_mixer_device_notify),
(setup_default_mixer), (setup_dialog):
* capplets/sound/sound-properties.glade: added support for selecting mixer device and
tracks in the capplet.
svn path=/trunk/; revision=7113
2007-01-08 22:50:39 +00:00
|
|
|
|
|
|
|
/* gst_element_set_state (mixer, GST_STATE_NULL); */
|
|
|
|
|
|
|
|
if (device_name) {
|
|
|
|
name = g_strdup_printf ("%s (%s)", device_name, longname);
|
|
|
|
g_free (device_name);
|
|
|
|
} else {
|
|
|
|
gchar *title;
|
|
|
|
|
|
|
|
unknown++;
|
|
|
|
|
|
|
|
title = g_strdup_printf (_("Unknown Volume Control %d"), unknown);
|
|
|
|
name = g_strdup_printf ("%s (%s)", title, longname);
|
|
|
|
g_free (title);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (device) {
|
|
|
|
gchar *tmp;
|
|
|
|
|
|
|
|
tmp = g_strdup_printf ("%s:%s", factory_name, device);
|
|
|
|
g_free (device);
|
|
|
|
device = tmp;
|
|
|
|
} else {
|
2008-04-01 18:41:51 +00:00
|
|
|
device = g_strdup (factory_name);
|
Fixes #173035
2007-01-08 Jan Arne Petersen <jpetersen@jpetersen.org>
Fixes #173035
* configure.in: updated sound capplet requirements.
* gnome-settings-daemon/actions/Makefile.am:
* gnome-settings-daemon/actions/acme-volume-gstreamer.c:
(acme_volume_gstreamer_finalize), (acme_volume_gstreamer_set_mute),
(update_state), (acme_volume_gstreamer_get_mute),
(acme_volume_gstreamer_get_volume),
(acme_volume_gstreamer_set_volume),
(acme_volume_gstreamer_close_real), (_acme_set_mixer),
(acme_volume_gstreamer_open), (acme_volume_gstreamer_init): added
support for multiple mixer tracks. Added support for gconf device and
track selection.
* capplets/sound/Makefile.am, mixer-support.c, mixer-support.h: Add new files.
* capplets/sound/sound-properties-capplet.c: (mixer_device_combobox_changed),
(add_track_label_to_list), (mixer_tracks_selection_changed),
(update_mixer_tracks_selection), (default_mixer_tracks_notify),
(update_mixer_device_combobox), (default_mixer_device_notify),
(setup_default_mixer), (setup_dialog):
* capplets/sound/sound-properties.glade: added support for selecting mixer device and
tracks in the capplet.
svn path=/trunk/; revision=7113
2007-01-08 22:50:39 +00:00
|
|
|
}
|
|
|
|
|
2008-04-01 18:41:51 +00:00
|
|
|
gtk_list_store_insert_with_values (device_store, &tree_iter, -1,
|
Fixes #173035
2007-01-08 Jan Arne Petersen <jpetersen@jpetersen.org>
Fixes #173035
* configure.in: updated sound capplet requirements.
* gnome-settings-daemon/actions/Makefile.am:
* gnome-settings-daemon/actions/acme-volume-gstreamer.c:
(acme_volume_gstreamer_finalize), (acme_volume_gstreamer_set_mute),
(update_state), (acme_volume_gstreamer_get_mute),
(acme_volume_gstreamer_get_volume),
(acme_volume_gstreamer_set_volume),
(acme_volume_gstreamer_close_real), (_acme_set_mixer),
(acme_volume_gstreamer_open), (acme_volume_gstreamer_init): added
support for multiple mixer tracks. Added support for gconf device and
track selection.
* capplets/sound/Makefile.am, mixer-support.c, mixer-support.h: Add new files.
* capplets/sound/sound-properties-capplet.c: (mixer_device_combobox_changed),
(add_track_label_to_list), (mixer_tracks_selection_changed),
(update_mixer_tracks_selection), (default_mixer_tracks_notify),
(update_mixer_device_combobox), (default_mixer_device_notify),
(setup_default_mixer), (setup_dialog):
* capplets/sound/sound-properties.glade: added support for selecting mixer device and
tracks in the capplet.
svn path=/trunk/; revision=7113
2007-01-08 22:50:39 +00:00
|
|
|
MIXER_DEVICE_MODEL_NAME_COLUMN, name,
|
|
|
|
MIXER_DEVICE_MODEL_DEVICE_COLUMN, device,
|
|
|
|
MIXER_DEVICE_MODEL_MIXER_COLUMN, mixer,
|
|
|
|
-1);
|
|
|
|
|
|
|
|
gst_element_set_state (mixer, GST_STATE_NULL);
|
|
|
|
gst_object_unref (GST_OBJECT (mixer));
|
|
|
|
|
|
|
|
g_free (name);
|
|
|
|
g_free (device);
|
|
|
|
}
|
|
|
|
|
|
|
|
g_list_free (mixer_list);
|
|
|
|
|
2008-04-01 18:41:51 +00:00
|
|
|
gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (device_store),
|
|
|
|
MIXER_DEVICE_MODEL_NAME_COLUMN,
|
|
|
|
GTK_SORT_ASCENDING);
|
|
|
|
|
Fixes #173035
2007-01-08 Jan Arne Petersen <jpetersen@jpetersen.org>
Fixes #173035
* configure.in: updated sound capplet requirements.
* gnome-settings-daemon/actions/Makefile.am:
* gnome-settings-daemon/actions/acme-volume-gstreamer.c:
(acme_volume_gstreamer_finalize), (acme_volume_gstreamer_set_mute),
(update_state), (acme_volume_gstreamer_get_mute),
(acme_volume_gstreamer_get_volume),
(acme_volume_gstreamer_set_volume),
(acme_volume_gstreamer_close_real), (_acme_set_mixer),
(acme_volume_gstreamer_open), (acme_volume_gstreamer_init): added
support for multiple mixer tracks. Added support for gconf device and
track selection.
* capplets/sound/Makefile.am, mixer-support.c, mixer-support.h: Add new files.
* capplets/sound/sound-properties-capplet.c: (mixer_device_combobox_changed),
(add_track_label_to_list), (mixer_tracks_selection_changed),
(update_mixer_tracks_selection), (default_mixer_tracks_notify),
(update_mixer_device_combobox), (default_mixer_device_notify),
(setup_default_mixer), (setup_dialog):
* capplets/sound/sound-properties.glade: added support for selecting mixer device and
tracks in the capplet.
svn path=/trunk/; revision=7113
2007-01-08 22:50:39 +00:00
|
|
|
return GTK_TREE_MODEL (device_store);
|
|
|
|
}
|
|
|
|
|
|
|
|
GtkTreeModel *
|
|
|
|
create_mixer_tracks_tree_model_for_mixer (GstMixer *mixer)
|
|
|
|
{
|
|
|
|
GtkListStore *tracks_store;
|
|
|
|
const GList *tracks, *l;
|
|
|
|
|
|
|
|
tracks_store = gtk_list_store_new (MIXER_TRACKS_MODEL_COLUMN_COUNT,
|
|
|
|
G_TYPE_STRING);
|
|
|
|
|
|
|
|
tracks = gst_mixer_list_tracks (mixer);
|
|
|
|
for (l = tracks; l != NULL; l = l->next) {
|
|
|
|
GstMixerTrack *track = l->data;
|
|
|
|
GtkTreeIter iter;
|
|
|
|
|
|
|
|
if (track->num_channels <= 0) {
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
|
|
|
|
gtk_list_store_insert_with_values (tracks_store, &iter, -1,
|
|
|
|
MIXER_TRACKS_MODEL_LABEL_COLUMN, track->label,
|
|
|
|
-1);
|
|
|
|
}
|
|
|
|
|
|
|
|
return GTK_TREE_MODEL (tracks_store);
|
|
|
|
}
|