aboutsummaryrefslogtreecommitdiff
path: root/src/slider-menu-item.c
diff options
context:
space:
mode:
authorKen VanDine <ken.vandine@canonical.com>2012-02-22 15:59:18 -0500
committerKen VanDine <ken.vandine@canonical.com>2012-02-22 15:59:18 -0500
commit06cfe1241f3a4f09a3910e870b14a8a22182abd2 (patch)
tree647645aae8f73b48bf922a9d2b98347e3598faf6 /src/slider-menu-item.c
parente6c06c2521abae0991acb1636766a300e66d2e19 (diff)
parent87422f8fa6face6715761ab76aeb04225f5ac235 (diff)
downloadayatana-indicator-sound-06cfe1241f3a4f09a3910e870b14a8a22182abd2.tar.gz
ayatana-indicator-sound-06cfe1241f3a4f09a3910e870b14a8a22182abd2.tar.bz2
ayatana-indicator-sound-06cfe1241f3a4f09a3910e870b14a8a22182abd2.zip
* New upstream release.
- crashed with SIGABRT in pa_cvolume_set (LP: #900117) - Mouse on coverart flushes the sound menu (LP: #927733) - album artwork misaligned and not visible (LP: #933359) - unity-panel-service crashed with SIGSEGV in transport_widget_is_selected (LP: #882109)
Diffstat (limited to 'src/slider-menu-item.c')
-rw-r--r--src/slider-menu-item.c30
1 files changed, 20 insertions, 10 deletions
diff --git a/src/slider-menu-item.c b/src/slider-menu-item.c
index 165c3d5..dc0671c 100644
--- a/src/slider-menu-item.c
+++ b/src/slider-menu-item.c
@@ -147,21 +147,31 @@ slider_menu_item_populate (SliderMenuItem* self, const pa_sink_info* update)
static void
slider_menu_item_update_volume (SliderMenuItem* self, gdouble percent)
{
+ g_return_if_fail (IS_SLIDER_MENU_ITEM (self));
-/*
- g_debug ("slider menu item update volume - about to set the volume to %f", percent);
-*/
-
- pa_cvolume new_volume;
- pa_cvolume_init(&new_volume);
- new_volume.channels = 1;
+ pa_cvolume mono_new_volume;
+ pa_cvolume_init(&mono_new_volume);
+ mono_new_volume.channels = 1;
pa_volume_t new_volume_value = (pa_volume_t) ((percent * PA_VOLUME_NORM) / 100);
- pa_cvolume_set(&new_volume, 1, new_volume_value);
+
+ if (new_volume_value == PA_VOLUME_INVALID || new_volume_value >= PA_VOLUME_MAX){
+ g_warning ("slider_menu_item_update_volume - volume is out of range !");
+ return;
+ }
+
+ pa_cvolume_set(&mono_new_volume, 1, new_volume_value);
SliderMenuItemPrivate* priv = SLIDER_MENU_ITEM_GET_PRIVATE (self);
-
+ if (!pa_cvolume_valid (&mono_new_volume)){
+ g_warning ("Invalid volume - ignore it!");
+ return;
+ }
+ if (!pa_channel_map_valid(&priv->channel_map)){
+ g_warning ("Invalid channel map - ignore update volume!");
+ return;
+ }
pa_cvolume_set(&priv->volume, priv->channel_map.channels, new_volume_value);
- pm_update_volume (priv->index, new_volume);
+ pm_update_volume (priv->index, mono_new_volume);
}
// To the UI