summaryrefslogtreecommitdiff
path: root/libmatemixer
diff options
context:
space:
mode:
authorMichal Ratajsky <[email protected]>2014-07-05 01:35:00 +0200
committerMichal Ratajsky <[email protected]>2014-07-05 01:35:00 +0200
commit85070f3b97a3213d75a7bebf86ad973aaa21c55b (patch)
treefa3a29c788acd6233ca7a201ee9aaebffafa7d4c /libmatemixer
parent4793cbd87fed50678215b5dc1ba8e708fd4c9b58 (diff)
downloadlibmatemixer-85070f3b97a3213d75a7bebf86ad973aaa21c55b.tar.bz2
libmatemixer-85070f3b97a3213d75a7bebf86ad973aaa21c55b.tar.xz
Add ability to set monitor name and fix a few problems
Diffstat (limited to 'libmatemixer')
-rw-r--r--libmatemixer/matemixer-control.c156
-rw-r--r--libmatemixer/matemixer-stream.c15
-rw-r--r--libmatemixer/matemixer-stream.h4
3 files changed, 113 insertions, 62 deletions
diff --git a/libmatemixer/matemixer-control.c b/libmatemixer/matemixer-control.c
index 06b938a..6aac624 100644
--- a/libmatemixer/matemixer-control.c
+++ b/libmatemixer/matemixer-control.c
@@ -90,40 +90,47 @@ static void mate_mixer_control_finalize (GObject *object);
G_DEFINE_TYPE (MateMixerControl, mate_mixer_control, G_TYPE_OBJECT);
-static void control_state_changed_cb (MateMixerBackend *backend,
- GParamSpec *pspec,
- MateMixerControl *control);
-
-static void control_device_added_cb (MateMixerBackend *backend,
- const gchar *name,
- MateMixerControl *control);
-static void control_device_changed_cb (MateMixerBackend *backend,
- const gchar *name,
- MateMixerControl *control);
-static void control_device_removed_cb (MateMixerBackend *backend,
- const gchar *name,
- MateMixerControl *control);
-
-static void control_stream_added_cb (MateMixerBackend *backend,
- const gchar *name,
- MateMixerControl *control);
-static void control_stream_changed_cb (MateMixerBackend *backend,
- const gchar *name,
- MateMixerControl *control);
-static void control_stream_removed_cb (MateMixerBackend *backend,
- const gchar *name,
- MateMixerControl *control);
-
-static gboolean control_try_next_backend (MateMixerControl *control);
-
-static void control_change_state (MateMixerControl *control,
- MateMixerState state);
-
-static void control_close (MateMixerControl *control);
-
-static void control_free_backend (MateMixerControl *control);
-static void control_free_devices (MateMixerControl *control);
-static void control_free_streams (MateMixerControl *control);
+static void control_backend_state_cb (MateMixerBackend *backend,
+ GParamSpec *pspec,
+ MateMixerControl *control);
+
+static void control_backend_device_added_cb (MateMixerBackend *backend,
+ const gchar *name,
+ MateMixerControl *control);
+static void control_backend_device_changed_cb (MateMixerBackend *backend,
+ const gchar *name,
+ MateMixerControl *control);
+static void control_backend_device_removed_cb (MateMixerBackend *backend,
+ const gchar *name,
+ MateMixerControl *control);
+
+static void control_backend_stream_added_cb (MateMixerBackend *backend,
+ const gchar *name,
+ MateMixerControl *control);
+static void control_backend_stream_changed_cb (MateMixerBackend *backend,
+ const gchar *name,
+ MateMixerControl *control);
+static void control_backend_stream_removed_cb (MateMixerBackend *backend,
+ const gchar *name,
+ MateMixerControl *control);
+
+static void control_backend_default_input_cb (MateMixerBackend *backend,
+ GParamSpec *pspec,
+ MateMixerControl *control);
+static void control_backend_default_output_cb (MateMixerBackend *backend,
+ GParamSpec *pspec,
+ MateMixerControl *control);
+
+static gboolean control_try_next_backend (MateMixerControl *control);
+
+static void control_change_state (MateMixerControl *control,
+ MateMixerState state);
+
+static void control_close (MateMixerControl *control);
+
+static void control_free_backend (MateMixerControl *control);
+static void control_free_devices (MateMixerControl *control);
+static void control_free_streams (MateMixerControl *control);
static void
mate_mixer_control_class_init (MateMixerControlClass *klass)
@@ -773,7 +780,7 @@ mate_mixer_control_open (MateMixerControl *control)
g_signal_connect (control->priv->backend,
"notify::state",
- G_CALLBACK (control_state_changed_cb),
+ G_CALLBACK (control_backend_state_cb),
control);
control_change_state (control, state);
@@ -1033,7 +1040,7 @@ mate_mixer_control_set_default_output_stream (MateMixerControl *control,
return FALSE;
}
- return mate_mixer_backend_set_default_input_stream (control->priv->backend, stream);
+ return mate_mixer_backend_set_default_output_stream (control->priv->backend, stream);
}
/**
@@ -1077,7 +1084,7 @@ mate_mixer_control_get_backend_type (MateMixerControl *control)
}
static void
-control_state_changed_cb (MateMixerBackend *backend,
+control_backend_state_cb (MateMixerBackend *backend,
GParamSpec *pspec,
MateMixerControl *control)
{
@@ -1123,9 +1130,9 @@ control_state_changed_cb (MateMixerBackend *backend,
}
static void
-control_device_added_cb (MateMixerBackend *backend,
- const gchar *name,
- MateMixerControl *control)
+control_backend_device_added_cb (MateMixerBackend *backend,
+ const gchar *name,
+ MateMixerControl *control)
{
control_free_devices (control);
@@ -1136,9 +1143,9 @@ control_device_added_cb (MateMixerBackend *backend,
}
static void
-control_device_changed_cb (MateMixerBackend *backend,
- const gchar *name,
- MateMixerControl *control)
+control_backend_device_changed_cb (MateMixerBackend *backend,
+ const gchar *name,
+ MateMixerControl *control)
{
g_signal_emit (G_OBJECT (control),
signals[DEVICE_CHANGED],
@@ -1147,9 +1154,9 @@ control_device_changed_cb (MateMixerBackend *backend,
}
static void
-control_device_removed_cb (MateMixerBackend *backend,
- const gchar *name,
- MateMixerControl *control)
+control_backend_device_removed_cb (MateMixerBackend *backend,
+ const gchar *name,
+ MateMixerControl *control)
{
control_free_devices (control);
@@ -1160,9 +1167,9 @@ control_device_removed_cb (MateMixerBackend *backend,
}
static void
-control_stream_added_cb (MateMixerBackend *backend,
- const gchar *name,
- MateMixerControl *control)
+control_backend_stream_added_cb (MateMixerBackend *backend,
+ const gchar *name,
+ MateMixerControl *control)
{
control_free_streams (control);
@@ -1173,9 +1180,9 @@ control_stream_added_cb (MateMixerBackend *backend,
}
static void
-control_stream_changed_cb (MateMixerBackend *backend,
- const gchar *name,
- MateMixerControl *control)
+control_backend_stream_changed_cb (MateMixerBackend *backend,
+ const gchar *name,
+ MateMixerControl *control)
{
g_signal_emit (G_OBJECT (control),
signals[STREAM_CHANGED],
@@ -1184,9 +1191,9 @@ control_stream_changed_cb (MateMixerBackend *backend,
}
static void
-control_stream_removed_cb (MateMixerBackend *backend,
- const gchar *name,
- MateMixerControl *control)
+control_backend_stream_removed_cb (MateMixerBackend *backend,
+ const gchar *name,
+ MateMixerControl *control)
{
control_free_streams (control);
@@ -1196,6 +1203,22 @@ control_stream_removed_cb (MateMixerBackend *backend,
name);
}
+static void
+control_backend_default_input_cb (MateMixerBackend *backend,
+ GParamSpec *pspec,
+ MateMixerControl *control)
+{
+ g_object_notify_by_pspec (G_OBJECT (control), properties[PROP_DEFAULT_INPUT]);
+}
+
+static void
+control_backend_default_output_cb (MateMixerBackend *backend,
+ GParamSpec *pspec,
+ MateMixerControl *control)
+{
+ g_object_notify_by_pspec (G_OBJECT (control), properties[PROP_DEFAULT_OUTPUT]);
+}
+
static gboolean
control_try_next_backend (MateMixerControl *control)
{
@@ -1246,7 +1269,7 @@ control_try_next_backend (MateMixerControl *control)
g_signal_connect (control->priv->backend,
"notify::state",
- G_CALLBACK (control_state_changed_cb),
+ G_CALLBACK (control_backend_state_cb),
control);
control_change_state (control, state);
@@ -1268,27 +1291,36 @@ control_change_state (MateMixerControl *control, MateMixerState state)
* then missing a notification about a change in the list */
g_signal_connect (control->priv->backend,
"device-added",
- G_CALLBACK (control_device_added_cb),
+ G_CALLBACK (control_backend_device_added_cb),
control);
g_signal_connect (control->priv->backend,
"device-changed",
- G_CALLBACK (control_device_changed_cb),
+ G_CALLBACK (control_backend_device_changed_cb),
control);
g_signal_connect (control->priv->backend,
"device-removed",
- G_CALLBACK (control_device_removed_cb),
+ G_CALLBACK (control_backend_device_removed_cb),
control);
g_signal_connect (control->priv->backend,
"stream-added",
- G_CALLBACK (control_stream_added_cb),
+ G_CALLBACK (control_backend_stream_added_cb),
control);
g_signal_connect (control->priv->backend,
"stream-changed",
- G_CALLBACK (control_stream_changed_cb),
+ G_CALLBACK (control_backend_stream_changed_cb),
control);
g_signal_connect (control->priv->backend,
"stream-removed",
- G_CALLBACK (control_stream_removed_cb),
+ G_CALLBACK (control_backend_stream_removed_cb),
+ control);
+
+ g_signal_connect (control->priv->backend,
+ "notify::default-input",
+ G_CALLBACK (control_backend_default_input_cb),
+ control);
+ g_signal_connect (control->priv->backend,
+ "notify::default-output",
+ G_CALLBACK (control_backend_default_output_cb),
control);
control->priv->backend_chosen = TRUE;
diff --git a/libmatemixer/matemixer-stream.c b/libmatemixer/matemixer-stream.c
index b4da26f..6f63217 100644
--- a/libmatemixer/matemixer-stream.c
+++ b/libmatemixer/matemixer-stream.c
@@ -624,6 +624,21 @@ mate_mixer_stream_monitor_is_running (MateMixerStream *stream)
return FALSE;
}
+gboolean
+mate_mixer_stream_monitor_set_name (MateMixerStream *stream, const gchar *name)
+{
+ MateMixerStreamInterface *iface;
+
+ g_return_val_if_fail (MATE_MIXER_IS_STREAM (stream), FALSE);
+
+ iface = MATE_MIXER_STREAM_GET_INTERFACE (stream);
+
+ if (iface->monitor_set_name)
+ return iface->monitor_set_name (stream, name);
+
+ return FALSE;
+}
+
const GList *
mate_mixer_stream_list_ports (MateMixerStream *stream)
{
diff --git a/libmatemixer/matemixer-stream.h b/libmatemixer/matemixer-stream.h
index 527c470..40a4463 100644
--- a/libmatemixer/matemixer-stream.h
+++ b/libmatemixer/matemixer-stream.h
@@ -101,6 +101,8 @@ struct _MateMixerStreamInterface
gboolean (*monitor_start) (MateMixerStream *stream);
void (*monitor_stop) (MateMixerStream *stream);
gboolean (*monitor_is_running) (MateMixerStream *stream);
+ gboolean (*monitor_set_name) (MateMixerStream *stream,
+ const gchar *name);
const GList * (*list_ports) (MateMixerStream *stream);
MateMixerPort * (*get_active_port) (MateMixerStream *stream);
gboolean (*set_active_port) (MateMixerStream *stream,
@@ -182,6 +184,8 @@ gboolean mate_mixer_stream_monitor_start (MateMixerStre
void mate_mixer_stream_monitor_stop (MateMixerStream *stream);
gboolean mate_mixer_stream_monitor_is_running (MateMixerStream *stream);
+gboolean mate_mixer_stream_monitor_set_name (MateMixerStream *stream,
+ const gchar *name);
const GList * mate_mixer_stream_list_ports (MateMixerStream *stream);