diff options
Diffstat (limited to 'libmatemixer/matemixer-stream-control.c')
-rw-r--r-- | libmatemixer/matemixer-stream-control.c | 236 |
1 files changed, 96 insertions, 140 deletions
diff --git a/libmatemixer/matemixer-stream-control.c b/libmatemixer/matemixer-stream-control.c index 161396e..5d97709 100644 --- a/libmatemixer/matemixer-stream-control.c +++ b/libmatemixer/matemixer-stream-control.c @@ -374,12 +374,11 @@ mate_mixer_stream_control_get_app_info (MateMixerStreamControl *control) g_return_val_if_fail (MATE_MIXER_IS_STREAM_CONTROL (control), NULL); if (control->priv->role == MATE_MIXER_STREAM_CONTROL_ROLE_APPLICATION) { - MateMixerStreamControlClass *klass; + MateMixerStreamControlClass *klass = + MATE_MIXER_STREAM_CONTROL_GET_CLASS (control); - klass = MATE_MIXER_STREAM_CONTROL_GET_CLASS (control); - - if G_LIKELY (klass->get_app_info != NULL) - return klass->get_app_info (control); + /* Implementation required for application role controls */ + return klass->get_app_info (control); } return NULL; } @@ -405,15 +404,17 @@ gboolean mate_mixer_stream_control_set_stream (MateMixerStreamControl *control, MateMixerStream *stream) { - g_return_val_if_fail (MATE_MIXER_IS_STREAM_CONTROL (control), 0); + g_return_val_if_fail (MATE_MIXER_IS_STREAM_CONTROL (control), FALSE); - if (control->priv->stream != stream) { - MateMixerStreamControlClass *klass; + if ((control->priv->flags & MATE_MIXER_STREAM_CONTROL_MOVABLE) == 0) + return FALSE; - klass = MATE_MIXER_STREAM_CONTROL_GET_CLASS (control); + if (control->priv->stream != stream) { + MateMixerStreamControlClass *klass = + MATE_MIXER_STREAM_CONTROL_GET_CLASS (control); - if (klass->set_stream == NULL || - klass->set_stream (control, stream) == FALSE) + /* Implementation required when the flag is available */ + if (klass->set_stream (control, stream) == FALSE) return FALSE; _mate_mixer_stream_control_set_stream (control, stream); @@ -443,22 +444,20 @@ mate_mixer_stream_control_set_mute (MateMixerStreamControl *control, gboolean mu { g_return_val_if_fail (MATE_MIXER_IS_STREAM_CONTROL (control), FALSE); - if (control->priv->mute == mute) - return TRUE; - - if (control->priv->flags & MATE_MIXER_STREAM_CONTROL_MUTE_WRITABLE) { - MateMixerStreamControlClass *klass; + if ((control->priv->flags & MATE_MIXER_STREAM_CONTROL_MUTE_WRITABLE) == 0) + return FALSE; - klass = MATE_MIXER_STREAM_CONTROL_GET_CLASS (control); + if (control->priv->mute != mute) { + MateMixerStreamControlClass *klass = + MATE_MIXER_STREAM_CONTROL_GET_CLASS (control); - if (klass->set_mute == NULL || - klass->set_mute (control, mute) == FALSE) + /* Implementation required when the flag is available */ + if (klass->set_mute (control, mute) == FALSE) return FALSE; _mate_mixer_stream_control_set_mute (control, mute); - return TRUE; } - return FALSE; + return TRUE; } /** @@ -494,8 +493,8 @@ mate_mixer_stream_control_get_volume (MateMixerStreamControl *control) klass = MATE_MIXER_STREAM_CONTROL_GET_CLASS (control); if (control->priv->flags & MATE_MIXER_STREAM_CONTROL_VOLUME_READABLE) { - if G_LIKELY (klass->get_volume != NULL) - return klass->get_volume (control); + /* Implementation required when the flag is available */ + return klass->get_volume (control); } return klass->get_min_volume (control); } @@ -511,12 +510,11 @@ mate_mixer_stream_control_set_volume (MateMixerStreamControl *control, guint vol g_return_val_if_fail (MATE_MIXER_IS_STREAM_CONTROL (control), FALSE); if (control->priv->flags & MATE_MIXER_STREAM_CONTROL_VOLUME_WRITABLE) { - MateMixerStreamControlClass *klass; + MateMixerStreamControlClass *klass = + MATE_MIXER_STREAM_CONTROL_GET_CLASS (control); - klass = MATE_MIXER_STREAM_CONTROL_GET_CLASS (control); - - if G_LIKELY (klass->set_volume != NULL) - return klass->set_volume (control, volume); + /* Implementation required when the flag is available */ + return klass->set_volume (control, volume); } return FALSE; } @@ -530,13 +528,13 @@ mate_mixer_stream_control_get_decibel (MateMixerStreamControl *control) { g_return_val_if_fail (MATE_MIXER_IS_STREAM_CONTROL (control), -MATE_MIXER_INFINITY); - if (control->priv->flags & MATE_MIXER_STREAM_CONTROL_HAS_DECIBEL) { - MateMixerStreamControlClass *klass; - - klass = MATE_MIXER_STREAM_CONTROL_GET_CLASS (control); + if (control->priv->flags & MATE_MIXER_STREAM_CONTROL_HAS_DECIBEL && + control->priv->flags & MATE_MIXER_STREAM_CONTROL_VOLUME_READABLE) { + MateMixerStreamControlClass *klass = + MATE_MIXER_STREAM_CONTROL_GET_CLASS (control); - if G_LIKELY (klass->get_decibel != NULL) - return klass->get_decibel (control); + /* Implementation required when the flags are available */ + return klass->get_decibel (control); } return -MATE_MIXER_INFINITY; } @@ -553,12 +551,11 @@ mate_mixer_stream_control_set_decibel (MateMixerStreamControl *control, gdouble if (control->priv->flags & MATE_MIXER_STREAM_CONTROL_HAS_DECIBEL && control->priv->flags & MATE_MIXER_STREAM_CONTROL_VOLUME_WRITABLE) { - MateMixerStreamControlClass *klass; - - klass = MATE_MIXER_STREAM_CONTROL_GET_CLASS (control); + MateMixerStreamControlClass *klass = + MATE_MIXER_STREAM_CONTROL_GET_CLASS (control); - if G_LIKELY (klass->set_decibel != NULL) - return klass->set_decibel (control, decibel); + /* Implementation required when the flags are available */ + return klass->set_decibel (control, decibel); } return FALSE; } @@ -569,8 +566,8 @@ mate_mixer_stream_control_set_decibel (MateMixerStreamControl *control, gdouble * @position: to channel position to check */ gboolean -mate_mixer_stream_control_has_channel_position (MateMixerStreamControl *control, - MateMixerChannelPosition position) +mate_mixer_stream_control_has_channel_position (MateMixerStreamControl *control, + MateMixerChannelPosition position) { MateMixerStreamControlClass *klass; @@ -612,17 +609,17 @@ mate_mixer_stream_control_get_channel_position (MateMixerStreamControl *control, guint mate_mixer_stream_control_get_channel_volume (MateMixerStreamControl *control, guint channel) { - g_return_val_if_fail (MATE_MIXER_IS_STREAM_CONTROL (control), 0); + MateMixerStreamControlClass *klass; - if (control->priv->flags & MATE_MIXER_STREAM_CONTROL_VOLUME_READABLE) { - MateMixerStreamControlClass *klass; + g_return_val_if_fail (MATE_MIXER_IS_STREAM_CONTROL (control), 0); - klass = MATE_MIXER_STREAM_CONTROL_GET_CLASS (control); + klass = MATE_MIXER_STREAM_CONTROL_GET_CLASS (control); - if G_LIKELY (klass->get_channel_volume != NULL) - return klass->get_channel_volume (control, channel); + if (control->priv->flags & MATE_MIXER_STREAM_CONTROL_VOLUME_READABLE) { + /* Implementation required when the flag is available */ + return klass->get_channel_volume (control, channel); } - return 0; + return klass->get_min_volume (control); } /** @@ -638,13 +635,12 @@ mate_mixer_stream_control_set_channel_volume (MateMixerStreamControl *control, { g_return_val_if_fail (MATE_MIXER_IS_STREAM_CONTROL (control), FALSE); - if (control->priv->flags & MATE_MIXER_STREAM_CONTROL_VOLUME_READABLE) { - MateMixerStreamControlClass *klass; - - klass = MATE_MIXER_STREAM_CONTROL_GET_CLASS (control); + if (control->priv->flags & MATE_MIXER_STREAM_CONTROL_VOLUME_WRITABLE) { + MateMixerStreamControlClass *klass = + MATE_MIXER_STREAM_CONTROL_GET_CLASS (control); - if G_LIKELY (klass->set_channel_volume != NULL) - return klass->set_channel_volume (control, channel, volume); + /* Implementation required when the flag is available */ + return klass->set_channel_volume (control, channel, volume); } return FALSE; } @@ -659,13 +655,13 @@ mate_mixer_stream_control_get_channel_decibel (MateMixerStreamControl *control, { g_return_val_if_fail (MATE_MIXER_IS_STREAM_CONTROL (control), -MATE_MIXER_INFINITY); - if (control->priv->flags & MATE_MIXER_STREAM_CONTROL_HAS_DECIBEL) { - MateMixerStreamControlClass *klass; - - klass = MATE_MIXER_STREAM_CONTROL_GET_CLASS (control); + if (control->priv->flags & MATE_MIXER_STREAM_CONTROL_HAS_DECIBEL && + control->priv->flags & MATE_MIXER_STREAM_CONTROL_VOLUME_READABLE) { + MateMixerStreamControlClass *klass = + MATE_MIXER_STREAM_CONTROL_GET_CLASS (control); - if G_LIKELY (klass->get_channel_decibel != NULL) - return klass->get_channel_decibel (control, channel); + /* Implementation required when the flags are available */ + return klass->get_channel_decibel (control, channel); } return -MATE_MIXER_INFINITY; } @@ -683,13 +679,13 @@ mate_mixer_stream_control_set_channel_decibel (MateMixerStreamControl *control, { g_return_val_if_fail (MATE_MIXER_IS_STREAM_CONTROL (control), FALSE); - if (control->priv->flags & MATE_MIXER_STREAM_CONTROL_HAS_DECIBEL) { - MateMixerStreamControlClass *klass; - - klass = MATE_MIXER_STREAM_CONTROL_GET_CLASS (control); + if (control->priv->flags & MATE_MIXER_STREAM_CONTROL_HAS_DECIBEL && + control->priv->flags & MATE_MIXER_STREAM_CONTROL_VOLUME_WRITABLE) { + MateMixerStreamControlClass *klass = + MATE_MIXER_STREAM_CONTROL_GET_CLASS (control); - if G_LIKELY (klass->set_channel_decibel != NULL) - return klass->set_channel_decibel (control, channel, decibel); + /* Implementation required when the flags are available */ + return klass->set_channel_decibel (control, channel, decibel); } return FALSE; } @@ -718,23 +714,22 @@ gboolean mate_mixer_stream_control_set_balance (MateMixerStreamControl *control, gfloat balance) { g_return_val_if_fail (MATE_MIXER_IS_STREAM_CONTROL (control), FALSE); + g_return_val_if_fail (balance >= -1.0f && balance <= 1.0f, FALSE); - if (control->priv->flags & MATE_MIXER_STREAM_CONTROL_CAN_BALANCE) { - MateMixerStreamControlClass *klass; - - if (balance < -1.0f || balance > 1.0f) - return FALSE; + if ((control->priv->flags & MATE_MIXER_STREAM_CONTROL_CAN_BALANCE) == 0) + return FALSE; - klass = MATE_MIXER_STREAM_CONTROL_GET_CLASS (control); + if (control->priv->balance != balance) { + MateMixerStreamControlClass *klass = + MATE_MIXER_STREAM_CONTROL_GET_CLASS (control); - if (klass->set_balance == NULL || - klass->set_balance (control, balance) == FALSE) + /* Implementation required when the flag is available */ + if (klass->set_balance (control, balance) == FALSE) return FALSE; _mate_mixer_stream_control_set_balance (control, balance); - return TRUE; } - return FALSE; + return TRUE; } /** @@ -761,23 +756,22 @@ gboolean mate_mixer_stream_control_set_fade (MateMixerStreamControl *control, gfloat fade) { g_return_val_if_fail (MATE_MIXER_IS_STREAM_CONTROL (control), FALSE); + g_return_val_if_fail (fade >= -1.0f && fade <= 1.0f, FALSE); - if (control->priv->flags & MATE_MIXER_STREAM_CONTROL_CAN_FADE) { - MateMixerStreamControlClass *klass; + if ((control->priv->flags & MATE_MIXER_STREAM_CONTROL_CAN_FADE) == 0) + return FALSE; - if (fade < -1.0f || fade > 1.0f) - return FALSE; + if (control->priv->fade != fade) { + MateMixerStreamControlClass *klass = + MATE_MIXER_STREAM_CONTROL_GET_CLASS (control); - klass = MATE_MIXER_STREAM_CONTROL_GET_CLASS (control); - - if (klass->set_fade == NULL || - klass->set_fade (control, fade) == FALSE) + /* Implementation required when the flag is available */ + if (klass->set_fade (control, fade) == FALSE) return FALSE; _mate_mixer_stream_control_set_fade (control, fade); - return TRUE; } - return FALSE; + return TRUE; } /** @@ -790,11 +784,11 @@ mate_mixer_stream_control_get_monitor_enabled (MateMixerStreamControl *control) g_return_val_if_fail (MATE_MIXER_IS_STREAM_CONTROL (control), FALSE); if (control->priv->flags & MATE_MIXER_STREAM_CONTROL_HAS_MONITOR) { - MateMixerStreamControlClass *klass; + MateMixerStreamControlClass *klass = + MATE_MIXER_STREAM_CONTROL_GET_CLASS (control); - klass = MATE_MIXER_STREAM_CONTROL_GET_CLASS (control); - if (klass->get_monitor_enabled != NULL) - return klass->get_monitor_enabled (control); + /* Implementation required when the flag is available */ + return klass->get_monitor_enabled (control); } return FALSE; } @@ -809,25 +803,11 @@ mate_mixer_stream_control_set_monitor_enabled (MateMixerStreamControl *control, { g_return_val_if_fail (MATE_MIXER_IS_STREAM_CONTROL (control), FALSE); - if (enabled == mate_mixer_stream_control_get_monitor_enabled (control)) - return TRUE; - - if (control->priv->flags & MATE_MIXER_STREAM_CONTROL_HAS_MONITOR) { - MateMixerStreamControlClass *klass; + if ((control->priv->flags & MATE_MIXER_STREAM_CONTROL_HAS_MONITOR) == 0) + return FALSE; - klass = MATE_MIXER_STREAM_CONTROL_GET_CLASS (control); - if (klass->set_monitor_enabled == NULL || - klass->set_monitor_enabled (control, enabled) == FALSE) - return FALSE; - - if (enabled == TRUE) - g_debug ("Control %s monitor enabled", - control->priv->name); - else - g_debug ("Control %s monitor disabled", - control->priv->name); - } - return FALSE; + /* Implementation required when the flag is available */ + return MATE_MIXER_STREAM_CONTROL_GET_CLASS (control)->set_monitor_enabled (control, enabled); } /** @@ -837,16 +817,10 @@ mate_mixer_stream_control_set_monitor_enabled (MateMixerStreamControl *control, guint mate_mixer_stream_control_get_min_volume (MateMixerStreamControl *control) { - MateMixerStreamControlClass *klass; - g_return_val_if_fail (MATE_MIXER_IS_STREAM_CONTROL (control), 0); - klass = MATE_MIXER_STREAM_CONTROL_GET_CLASS (control); - - if (klass->get_min_volume != NULL) - return klass->get_min_volume (control); - - return 0; + /* Implementation required */ + return MATE_MIXER_STREAM_CONTROL_GET_CLASS (control)->get_min_volume (control); } /** @@ -856,16 +830,10 @@ mate_mixer_stream_control_get_min_volume (MateMixerStreamControl *control) guint mate_mixer_stream_control_get_max_volume (MateMixerStreamControl *control) { - MateMixerStreamControlClass *klass; - g_return_val_if_fail (MATE_MIXER_IS_STREAM_CONTROL (control), 0); - klass = MATE_MIXER_STREAM_CONTROL_GET_CLASS (control); - - if (klass->get_max_volume != NULL) - return klass->get_max_volume (control); - - return 0; + /* Implementation required */ + return MATE_MIXER_STREAM_CONTROL_GET_CLASS (control)->get_max_volume (control); } /** @@ -875,16 +843,10 @@ mate_mixer_stream_control_get_max_volume (MateMixerStreamControl *control) guint mate_mixer_stream_control_get_normal_volume (MateMixerStreamControl *control) { - MateMixerStreamControlClass *klass; - g_return_val_if_fail (MATE_MIXER_IS_STREAM_CONTROL (control), 0); - klass = MATE_MIXER_STREAM_CONTROL_GET_CLASS (control); - - if (klass->get_normal_volume != NULL) - return klass->get_normal_volume (control); - - return 0; + /* Implementation required */ + return MATE_MIXER_STREAM_CONTROL_GET_CLASS (control)->get_normal_volume (control); } /** @@ -894,16 +856,10 @@ mate_mixer_stream_control_get_normal_volume (MateMixerStreamControl *control) guint mate_mixer_stream_control_get_base_volume (MateMixerStreamControl *control) { - MateMixerStreamControlClass *klass; - g_return_val_if_fail (MATE_MIXER_IS_STREAM_CONTROL (control), 0); - klass = MATE_MIXER_STREAM_CONTROL_GET_CLASS (control); - - if (klass->get_base_volume != NULL) - return klass->get_base_volume (control); - - return 0; + /* Implementation required */ + return MATE_MIXER_STREAM_CONTROL_GET_CLASS (control)->get_base_volume (control); } /* Protected functions */ |