[gnome-media] Fix crash on startup restoring the event-role stream
- From: Bastien Nocera <hadess src gnome org>
- To: svn-commits-list gnome org
- Subject: [gnome-media] Fix crash on startup restoring the event-role stream
- Date: Fri, 15 May 2009 12:20:11 -0400 (EDT)
commit 44591b9a4dc3935f8f9bf02c16b19717b505fd3a
Author: Bastien Nocera <hadess hadess net>
Date: Fri May 15 17:18:32 2009 +0100
Fix crash on startup restoring the event-role stream
The event-role stream is the only GvcMixerStream class that isn't
attached to a sink or source per se, so, because of the recent
volume changes by Lennart, we need to attach a fake channel map to it,
so volume can be propagated.
---
gnome-volume-control/src/gvc-mixer-control.c | 16 ++++++++++++----
gnome-volume-control/src/gvc-mixer-event-role.c | 4 +++-
gnome-volume-control/src/gvc-mixer-event-role.h | 5 +++--
3 files changed, 18 insertions(+), 7 deletions(-)
diff --git a/gnome-volume-control/src/gvc-mixer-control.c b/gnome-volume-control/src/gvc-mixer-control.c
index a0816e3..d5a79f7 100644
--- a/gnome-volume-control/src/gvc-mixer-control.c
+++ b/gnome-volume-control/src/gvc-mixer-control.c
@@ -133,7 +133,7 @@ gvc_mixer_control_stream_restore_cb (pa_context *c,
if (o == NULL) {
g_warning ("pa_ext_stream_restore_write() failed: %s",
- pa_strerror (pa_context_errno (control->priv->pa_context)));
+ pa_strerror (pa_context_errno (control->priv->pa_context)));
return;
}
@@ -157,7 +157,7 @@ gvc_mixer_control_set_default_sink (GvcMixerControl *control,
NULL);
if (o == NULL) {
g_warning ("pa_context_set_default_sink() failed: %s",
- pa_strerror (pa_context_errno (control->priv->pa_context)));
+ pa_strerror (pa_context_errno (control->priv->pa_context)));
return FALSE;
}
@@ -173,7 +173,7 @@ gvc_mixer_control_set_default_sink (GvcMixerControl *control,
if (o == NULL) {
g_warning ("pa_ext_stream_restore_read() failed: %s",
- pa_strerror (pa_context_errno (control->priv->pa_context)));
+ pa_strerror (pa_context_errno (control->priv->pa_context)));
return FALSE;
}
@@ -1045,8 +1045,16 @@ update_event_role_stream (GvcMixerControl *control,
is_new = FALSE;
if (!control->priv->event_sink_input_is_set) {
+ pa_channel_map pa_map;
+ GvcChannelMap *map;
+
+ pa_map.channels = 1;
+ pa_map.map[0] = PA_CHANNEL_POSITION_MONO;
+ map = gvc_channel_map_new_from_pa_channel_map (&pa_map);
+
stream = gvc_mixer_event_role_new (control->priv->pa_context,
- info->device);
+ info->device,
+ map);
control->priv->event_sink_input_id = gvc_mixer_stream_get_id (stream);
control->priv->event_sink_input_is_set = TRUE;
diff --git a/gnome-volume-control/src/gvc-mixer-event-role.c b/gnome-volume-control/src/gvc-mixer-event-role.c
index 51798e2..1dcd5ff 100644
--- a/gnome-volume-control/src/gvc-mixer-event-role.c
+++ b/gnome-volume-control/src/gvc-mixer-event-role.c
@@ -221,7 +221,8 @@ gvc_mixer_event_role_finalize (GObject *object)
GvcMixerStream *
gvc_mixer_event_role_new (pa_context *context,
- const char *device)
+ const char *device,
+ GvcChannelMap *channel_map)
{
GObject *object;
@@ -229,6 +230,7 @@ gvc_mixer_event_role_new (pa_context *context,
"pa-context", context,
"index", 0,
"device", device,
+ "channel-map", channel_map,
NULL);
return GVC_MIXER_STREAM (object);
diff --git a/gnome-volume-control/src/gvc-mixer-event-role.h b/gnome-volume-control/src/gvc-mixer-event-role.h
index 280c597..ab4c509 100644
--- a/gnome-volume-control/src/gvc-mixer-event-role.h
+++ b/gnome-volume-control/src/gvc-mixer-event-role.h
@@ -48,8 +48,9 @@ typedef struct
GType gvc_mixer_event_role_get_type (void);
-GvcMixerStream * gvc_mixer_event_role_new (pa_context *context,
- const char *device);
+GvcMixerStream * gvc_mixer_event_role_new (pa_context *context,
+ const char *device,
+ GvcChannelMap *channel_map);
G_END_DECLS
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]