summaryrefslogtreecommitdiff
path: root/libmatemixer/matemixer-backend.c
diff options
context:
space:
mode:
Diffstat (limited to 'libmatemixer/matemixer-backend.c')
-rw-r--r--libmatemixer/matemixer-backend.c34
1 files changed, 28 insertions, 6 deletions
diff --git a/libmatemixer/matemixer-backend.c b/libmatemixer/matemixer-backend.c
index 9533e0f..18e622f 100644
--- a/libmatemixer/matemixer-backend.c
+++ b/libmatemixer/matemixer-backend.c
@@ -30,31 +30,53 @@ mate_mixer_backend_default_init (MateMixerBackendInterface *iface)
gboolean
mate_mixer_backend_open (MateMixerBackend *backend)
{
+ MateMixerBackendInterface *iface;
+
g_return_val_if_fail (MATE_MIXER_IS_BACKEND (backend), NULL);
- return MATE_MIXER_BACKEND_GET_INTERFACE (backend)->open (backend);
+ iface = MATE_MIXER_BACKEND_GET_INTERFACE (backend);
+ if (iface->open)
+ return iface->open (backend);
+
+ return FALSE;
}
void
mate_mixer_backend_close (MateMixerBackend *backend)
{
+ MateMixerBackendInterface *iface;
+
g_return_val_if_fail (MATE_MIXER_IS_BACKEND (backend), NULL);
- MATE_MIXER_BACKEND_GET_INTERFACE (backend)->close (backend);
+ iface = MATE_MIXER_BACKEND_GET_INTERFACE (backend);
+ if (iface->close)
+ iface->close (backend);
}
-const GList *
+GList *
mate_mixer_backend_list_devices (MateMixerBackend *backend)
{
+ MateMixerBackendInterface *iface;
+
g_return_val_if_fail (MATE_MIXER_IS_BACKEND (backend), NULL);
- return MATE_MIXER_BACKEND_GET_INTERFACE (backend)->list_devices (backend);
+ iface = MATE_MIXER_BACKEND_GET_INTERFACE (backend);
+ if (iface->list_devices)
+ return iface->list_devices (backend);
+
+ return NULL;
}
-const GList *
+GList *
mate_mixer_backend_list_tracks (MateMixerBackend *backend)
{
+ MateMixerBackendInterface *iface;
+
g_return_val_if_fail (MATE_MIXER_IS_BACKEND (backend), NULL);
- return MATE_MIXER_BACKEND_GET_INTERFACE (backend)->list_tracks (backend);
+ iface = MATE_MIXER_BACKEND_GET_INTERFACE (backend);
+ if (iface->list_tracks)
+ return iface->list_tracks (backend);
+
+ return NULL;
}