summaryrefslogtreecommitdiff
path: root/libmatemixer/matemixer-device.c
diff options
context:
space:
mode:
Diffstat (limited to 'libmatemixer/matemixer-device.c')
-rw-r--r--libmatemixer/matemixer-device.c66
1 files changed, 65 insertions, 1 deletions
diff --git a/libmatemixer/matemixer-device.c b/libmatemixer/matemixer-device.c
index 0c36b0b..8e6a465 100644
--- a/libmatemixer/matemixer-device.c
+++ b/libmatemixer/matemixer-device.c
@@ -62,7 +62,71 @@ mate_mixer_device_default_init (MateMixerDeviceInterface *iface)
const GList *
mate_mixer_device_list_tracks (MateMixerDevice *device)
{
+ MateMixerDeviceInterface *iface;
+
+ g_return_val_if_fail (MATE_MIXER_IS_DEVICE (device), NULL);
+
+ iface = MATE_MIXER_DEVICE_GET_INTERFACE (device);
+ if (iface->list_tracks)
+ return iface->list_tracks (device);
+
+ return NULL;
+}
+
+const GList *
+mate_mixer_device_get_ports (MateMixerDevice *device)
+{
+ MateMixerDeviceInterface *iface;
+
+ g_return_val_if_fail (MATE_MIXER_IS_DEVICE (device), NULL);
+
+ iface = MATE_MIXER_DEVICE_GET_INTERFACE (device);
+ if (iface->get_ports)
+ return iface->get_ports (device);
+
+ return NULL;
+}
+
+const GList *
+mate_mixer_device_get_profiles (MateMixerDevice *device)
+{
+ MateMixerDeviceInterface *iface;
+
+ g_return_val_if_fail (MATE_MIXER_IS_DEVICE (device), NULL);
+
+ iface = MATE_MIXER_DEVICE_GET_INTERFACE (device);
+ if (iface->get_profiles)
+ return iface->get_profiles (device);
+
+ return NULL;
+}
+
+MateMixerDeviceProfile *
+mate_mixer_device_get_active_profile (MateMixerDevice *device)
+{
+ MateMixerDeviceInterface *iface;
+
g_return_val_if_fail (MATE_MIXER_IS_DEVICE (device), NULL);
- return MATE_MIXER_DEVICE_GET_INTERFACE (device)->list_tracks (device);
+ iface = MATE_MIXER_DEVICE_GET_INTERFACE (device);
+ if (iface->get_active_profile)
+ return iface->get_active_profile (device);
+
+ return NULL;
+}
+
+gboolean
+mate_mixer_device_set_active_profile (MateMixerDevice *device,
+ MateMixerDeviceProfile *profile)
+{
+ MateMixerDeviceInterface *iface;
+
+ g_return_val_if_fail (MATE_MIXER_IS_DEVICE (device), NULL);
+ g_return_val_if_fail (MATE_MIXER_IS_DEVICE_PROFILE (profile), NULL);
+
+ iface = MATE_MIXER_DEVICE_GET_INTERFACE (device);
+ if (iface->set_active_profile)
+ return iface->set_active_profile (device, profile);
+
+ return FALSE;
}