diff options
Diffstat (limited to 'libmatemixer/matemixer-device-profile.c')
-rw-r--r-- | libmatemixer/matemixer-device-profile.c | 142 |
1 files changed, 115 insertions, 27 deletions
diff --git a/libmatemixer/matemixer-device-profile.c b/libmatemixer/matemixer-device-profile.c index e229b6a..0485740 100644 --- a/libmatemixer/matemixer-device-profile.c +++ b/libmatemixer/matemixer-device-profile.c @@ -19,9 +19,11 @@ #include <glib-object.h> #include "matemixer-device-profile.h" +#include "matemixer-device-profile-private.h" /** * SECTION:matemixer-device-profile + * @short_description: Device profile * @include: libmatemixer/matemixer.h */ @@ -46,19 +48,19 @@ enum { static GParamSpec *properties[N_PROPERTIES] = { NULL, }; -static void mate_mixer_device_profile_class_init (MateMixerDeviceProfileClass *klass); +static void mate_mixer_device_profile_class_init (MateMixerDeviceProfileClass *klass); -static void mate_mixer_device_profile_get_property (GObject *object, - guint param_id, - GValue *value, - GParamSpec *pspec); -static void mate_mixer_device_profile_set_property (GObject *object, - guint param_id, - const GValue *value, - GParamSpec *pspec); +static void mate_mixer_device_profile_get_property (GObject *object, + guint param_id, + GValue *value, + GParamSpec *pspec); +static void mate_mixer_device_profile_set_property (GObject *object, + guint param_id, + const GValue *value, + GParamSpec *pspec); -static void mate_mixer_device_profile_init (MateMixerDeviceProfile *profile); -static void mate_mixer_device_profile_finalize (GObject *object); +static void mate_mixer_device_profile_init (MateMixerDeviceProfile *profile); +static void mate_mixer_device_profile_finalize (GObject *object); G_DEFINE_TYPE (MateMixerDeviceProfile, mate_mixer_device_profile, G_TYPE_OBJECT); @@ -215,22 +217,10 @@ mate_mixer_device_profile_finalize (GObject *object) G_OBJECT_CLASS (mate_mixer_device_profile_parent_class)->finalize (object); } -MateMixerDeviceProfile * -mate_mixer_device_profile_new (const gchar *name, - const gchar *description, - guint priority, - guint input_streams, - guint output_streams) -{ - return g_object_new (MATE_MIXER_TYPE_DEVICE_PROFILE, - "name", name, - "description", description, - "priority", priority, - "num-input-streams", input_streams, - "num-output-streams", output_streams, - NULL); -} - +/** + * mate_mixer_device_profile_get_name: + * @profile: a #MateMixerDeviceProfile + */ const gchar * mate_mixer_device_profile_get_name (MateMixerDeviceProfile *profile) { @@ -239,6 +229,10 @@ mate_mixer_device_profile_get_name (MateMixerDeviceProfile *profile) return profile->priv->name; } +/** + * mate_mixer_device_profile_get_description: + * @profile: a #MateMixerDeviceProfile + */ const gchar * mate_mixer_device_profile_get_description (MateMixerDeviceProfile *profile) { @@ -247,6 +241,10 @@ mate_mixer_device_profile_get_description (MateMixerDeviceProfile *profile) return profile->priv->description; } +/** + * mate_mixer_device_profile_get_priority: + * @profile: a #MateMixerDeviceProfile + */ guint mate_mixer_device_profile_get_priority (MateMixerDeviceProfile *profile) { @@ -255,6 +253,10 @@ mate_mixer_device_profile_get_priority (MateMixerDeviceProfile *profile) return profile->priv->priority; } +/** + * mate_mixer_device_profile_get_num_input_streams: + * @profile: a #MateMixerDeviceProfile + */ guint mate_mixer_device_profile_get_num_input_streams (MateMixerDeviceProfile *profile) { @@ -263,6 +265,10 @@ mate_mixer_device_profile_get_num_input_streams (MateMixerDeviceProfile *profile return profile->priv->num_input_streams; } +/** + * mate_mixer_device_profile_get_num_output_streams: + * @profile: a #MateMixerDeviceProfile + */ guint mate_mixer_device_profile_get_num_output_streams (MateMixerDeviceProfile *profile) { @@ -270,3 +276,85 @@ mate_mixer_device_profile_get_num_output_streams (MateMixerDeviceProfile *profil return profile->priv->num_output_streams; } + +MateMixerDeviceProfile * +_mate_mixer_device_profile_new (const gchar *name, + const gchar *description, + guint priority, + guint input_streams, + guint output_streams) +{ + return g_object_new (MATE_MIXER_TYPE_DEVICE_PROFILE, + "name", name, + "description", description, + "priority", priority, + "num-input-streams", input_streams, + "num-output-streams", output_streams, + NULL); +} + +gboolean +_mate_mixer_device_profile_update_description (MateMixerDeviceProfile *profile, + const gchar *description) +{ + g_return_val_if_fail (MATE_MIXER_IS_DEVICE_PROFILE (profile), FALSE); + + if (g_strcmp0 (profile->priv->description, description) != 0) { + g_free (profile->priv->description); + + profile->priv->description = g_strdup (description); + + g_object_notify_by_pspec (G_OBJECT (profile), properties[PROP_DESCRIPTION]); + return TRUE; + } + + return FALSE; +} + +gboolean +_mate_mixer_device_profile_update_priority (MateMixerDeviceProfile *profile, + guint priority) +{ + g_return_val_if_fail (MATE_MIXER_IS_DEVICE_PROFILE (profile), FALSE); + + if (profile->priv->priority != priority) { + profile->priv->priority = priority; + + g_object_notify_by_pspec (G_OBJECT (profile), properties[PROP_PRIORITY]); + return TRUE; + } + + return FALSE; +} + +gboolean +_mate_mixer_device_profile_update_num_input_streams (MateMixerDeviceProfile *profile, + guint num) +{ + g_return_val_if_fail (MATE_MIXER_IS_DEVICE_PROFILE (profile), FALSE); + + if (profile->priv->num_input_streams != num) { + profile->priv->num_input_streams = num; + + g_object_notify_by_pspec (G_OBJECT (profile), properties[PROP_NUM_INPUT_STREAMS]); + return TRUE; + } + + return FALSE; +} + +gboolean +_mate_mixer_device_profile_update_num_output_streams (MateMixerDeviceProfile *profile, + guint num) +{ + g_return_val_if_fail (MATE_MIXER_IS_DEVICE_PROFILE (profile), FALSE); + + if (profile->priv->num_output_streams != num) { + profile->priv->num_output_streams = num; + + g_object_notify_by_pspec (G_OBJECT (profile), properties[PROP_NUM_OUTPUT_STREAMS]); + return TRUE; + } + + return FALSE; +} |