summaryrefslogtreecommitdiff
path: root/libmatemixer/matemixer-device-profile.c
diff options
context:
space:
mode:
Diffstat (limited to 'libmatemixer/matemixer-device-profile.c')
-rw-r--r--libmatemixer/matemixer-device-profile.c142
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;
+}