[gnome-media] Handle the last input source being removed
- From: Bastien Nocera <hadess src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gnome-media] Handle the last input source being removed
- Date: Tue, 2 Feb 2010 12:29:05 +0000 (UTC)
commit 2bbb3e22b81f7cb46488f7705bdbc1932c0cc07c
Author: Bastien Nocera <hadess hadess net>
Date: Tue Feb 2 12:25:16 2010 +0000
Handle the last input source being removed
When removing the last input source, emit "default-source-changed"
with an invalid stream ID, so that the front-end knows to remove
the widgets associated with the disappeared input.
(Same applies to sinks/outputs, though PulseAudio will create a
dummy output, hiding that fact)
https://bugzilla.gnome.org/show_bug.cgi?id=598921
gnome-volume-control/src/gvc-applet.c | 2 +-
gnome-volume-control/src/gvc-mixer-control.c | 9 ++++++++-
gnome-volume-control/src/gvc-mixer-dialog.c | 21 ++++++++++++++++-----
3 files changed, 25 insertions(+), 7 deletions(-)
---
diff --git a/gnome-volume-control/src/gvc-applet.c b/gnome-volume-control/src/gvc-applet.c
index ae89e71..8de0f43 100644
--- a/gnome-volume-control/src/gvc-applet.c
+++ b/gnome-volume-control/src/gvc-applet.c
@@ -141,7 +141,7 @@ update_default_source (GvcApplet *applet)
stream);
maybe_show_status_icons(applet);
} else {
- g_warning ("Unable to get default source");
+ g_debug ("Unable to get default source, or no source available");
}
}
diff --git a/gnome-volume-control/src/gvc-mixer-control.c b/gnome-volume-control/src/gvc-mixer-control.c
index 72e607f..c1f6550 100644
--- a/gnome-volume-control/src/gvc-mixer-control.c
+++ b/gnome-volume-control/src/gvc-mixer-control.c
@@ -448,6 +448,10 @@ _set_default_source (GvcMixerControl *control,
if (stream == NULL) {
control->priv->default_source_id = 0;
control->priv->default_source_is_set = FALSE;
+ g_signal_emit (control,
+ signals[DEFAULT_SOURCE_CHANGED],
+ 0,
+ PA_INVALID_INDEX);
return;
}
@@ -472,6 +476,10 @@ _set_default_sink (GvcMixerControl *control,
if (stream == NULL) {
control->priv->default_sink_id = 0;
control->priv->default_sink_is_set = FALSE;
+ g_signal_emit (control,
+ signals[DEFAULT_SINK_CHANGED],
+ 0,
+ PA_INVALID_INDEX);
return;
}
@@ -480,7 +488,6 @@ _set_default_sink (GvcMixerControl *control,
if (control->priv->default_sink_id != new_id) {
control->priv->default_sink_id = new_id;
control->priv->default_sink_is_set = TRUE;
-
g_signal_emit (control,
signals[DEFAULT_SINK_CHANGED],
0,
diff --git a/gnome-volume-control/src/gvc-mixer-dialog.c b/gnome-volume-control/src/gvc-mixer-dialog.c
index afc1705..f415d32 100644
--- a/gnome-volume-control/src/gvc-mixer-dialog.c
+++ b/gnome-volume-control/src/gvc-mixer-dialog.c
@@ -129,9 +129,14 @@ update_default_input (GvcMixerDialog *dialog)
{
GtkTreeModel *model;
GtkTreeIter iter;
+ gboolean ret;
model = gtk_tree_view_get_model (GTK_TREE_VIEW (dialog->priv->input_treeview));
- gtk_tree_model_get_iter_first (model, &iter);
+ ret = gtk_tree_model_get_iter_first (model, &iter);
+ if (ret == FALSE) {
+ g_debug ("No default input selected or available");
+ return;
+ }
do {
gboolean toggled;
gboolean is_default;
@@ -369,8 +374,11 @@ on_mixer_control_default_sink_changed (GvcMixerControl *control,
g_debug ("GvcMixerDialog: default sink changed: %u", id);
- stream = gvc_mixer_control_lookup_stream_id (dialog->priv->mixer_control,
- id);
+ if (id == PA_INVALID_INDEX)
+ stream = NULL;
+ else
+ stream = gvc_mixer_control_lookup_stream_id (dialog->priv->mixer_control,
+ id);
bar_set_stream (dialog, dialog->priv->output_bar, stream);
update_output_settings (dialog);
@@ -547,7 +555,7 @@ update_input_settings (GvcMixerDialog *dialog)
stream = gvc_mixer_control_get_default_source (dialog->priv->mixer_control);
if (stream == NULL) {
- g_warning ("Default source stream not found");
+ g_debug ("Default source stream not found");
return;
}
@@ -589,7 +597,10 @@ on_mixer_control_default_source_changed (GvcMixerControl *control,
g_debug ("GvcMixerDialog: default source changed: %u", id);
- stream = gvc_mixer_control_lookup_stream_id (dialog->priv->mixer_control, id);
+ if (id == PA_INVALID_INDEX)
+ stream = NULL;
+ else
+ stream = gvc_mixer_control_lookup_stream_id (dialog->priv->mixer_control, id);
/* Disconnect the adj, otherwise it might change if is_amplified changes */
adj = GTK_ADJUSTMENT (gvc_channel_bar_get_adjustment (GVC_CHANNEL_BAR (dialog->priv->input_bar)));
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]