[gnome-media] Merge the is_running logic
- From: Bastien Nocera <hadess src gnome org>
- To: svn-commits-list gnome org
- Subject: [gnome-media] Merge the is_running logic
- Date: Fri, 15 May 2009 12:25:46 -0400 (EDT)
commit a6038b152036cb3e1eca21a6b4bd749a15019fc9
Author: Bastien Nocera <hadess hadess net>
Date: Fri May 15 17:24:41 2009 +0100
Merge the is_running logic
It was the same in all the GvcMixerStream classes with real backing
streams, so merge all that logic into gvc-mixer-stream.c
---
gnome-volume-control/src/gvc-mixer-event-role.c | 12 ++++---
gnome-volume-control/src/gvc-mixer-sink-input.c | 33 ++------------------
gnome-volume-control/src/gvc-mixer-sink.c | 33 ++------------------
gnome-volume-control/src/gvc-mixer-source-output.c | 3 +-
gnome-volume-control/src/gvc-mixer-source.c | 33 ++------------------
gnome-volume-control/src/gvc-mixer-stream.c | 27 ++++++++++++++--
gnome-volume-control/src/gvc-mixer-stream.h | 3 +-
7 files changed, 42 insertions(+), 102 deletions(-)
diff --git a/gnome-volume-control/src/gvc-mixer-event-role.c b/gnome-volume-control/src/gvc-mixer-event-role.c
index 1dcd5ff..69e38ce 100644
--- a/gnome-volume-control/src/gvc-mixer-event-role.c
+++ b/gnome-volume-control/src/gvc-mixer-event-role.c
@@ -53,7 +53,8 @@ G_DEFINE_TYPE (GvcMixerEventRole, gvc_mixer_event_role, GVC_TYPE_MIXER_STREAM)
static gboolean
update_settings (GvcMixerEventRole *role,
- gboolean is_muted)
+ gboolean is_muted,
+ gpointer *op)
{
pa_operation *o;
guint index;
@@ -86,16 +87,17 @@ update_settings (GvcMixerEventRole *role,
return FALSE;
}
- pa_operation_unref(o);
+ if (op != NULL)
+ *op = o;
return TRUE;
}
static gboolean
-gvc_mixer_event_role_push_volume (GvcMixerStream *stream)
+gvc_mixer_event_role_push_volume (GvcMixerStream *stream, gpointer *op)
{
return update_settings (GVC_MIXER_EVENT_ROLE (stream),
- gvc_mixer_stream_get_is_muted (stream));
+ gvc_mixer_stream_get_is_muted (stream), op);
}
static gboolean
@@ -103,7 +105,7 @@ gvc_mixer_event_role_change_is_muted (GvcMixerStream *stream,
gboolean is_muted)
{
return update_settings (GVC_MIXER_EVENT_ROLE (stream),
- is_muted);
+ is_muted, NULL);
}
static gboolean
diff --git a/gnome-volume-control/src/gvc-mixer-sink-input.c b/gnome-volume-control/src/gvc-mixer-sink-input.c
index 83ea651..35551bb 100644
--- a/gnome-volume-control/src/gvc-mixer-sink-input.c
+++ b/gnome-volume-control/src/gvc-mixer-sink-input.c
@@ -35,7 +35,7 @@
struct GvcMixerSinkInputPrivate
{
- pa_operation *change_volume_op;
+ gpointer dummy;
};
static void gvc_mixer_sink_input_class_init (GvcMixerSinkInputClass *klass);
@@ -46,7 +46,7 @@ static void gvc_mixer_sink_input_dispose (GObject *object)
G_DEFINE_TYPE (GvcMixerSinkInput, gvc_mixer_sink_input, GVC_TYPE_MIXER_STREAM)
static gboolean
-gvc_mixer_sink_input_push_volume (GvcMixerStream *stream)
+gvc_mixer_sink_input_push_volume (GvcMixerStream *stream, gpointer *op)
{
pa_operation *o;
guint index;
@@ -54,7 +54,6 @@ gvc_mixer_sink_input_push_volume (GvcMixerStream *stream)
pa_context *context;
const pa_cvolume *cv;
guint num_channels;
- GvcMixerSinkInput *sink_input = GVC_MIXER_SINK_INPUT(stream);
index = gvc_mixer_stream_get_index (stream);
@@ -76,10 +75,7 @@ gvc_mixer_sink_input_push_volume (GvcMixerStream *stream)
return FALSE;
}
- if (sink_input->priv->change_volume_op != NULL)
- pa_operation_unref (sink_input->priv->change_volume_op);
-
- sink_input->priv->change_volume_op = o;
+ *op = o;
return TRUE;
}
@@ -111,23 +107,6 @@ gvc_mixer_sink_input_change_is_muted (GvcMixerStream *stream,
return TRUE;
}
-static gboolean
-gvc_mixer_sink_input_is_running (GvcMixerStream *stream)
-{
- GvcMixerSinkInput *sink_input = GVC_MIXER_SINK_INPUT (stream);
-
- if (sink_input->priv->change_volume_op == NULL)
- return FALSE;
-
- if ((pa_operation_get_state(sink_input->priv->change_volume_op) == PA_OPERATION_RUNNING))
- return TRUE;
-
- pa_operation_unref(sink_input->priv->change_volume_op);
- sink_input->priv->change_volume_op = NULL;
-
- return FALSE;
-}
-
static GObject *
gvc_mixer_sink_input_constructor (GType type,
guint n_construct_properties,
@@ -155,7 +134,6 @@ gvc_mixer_sink_input_class_init (GvcMixerSinkInputClass *klass)
stream_class->push_volume = gvc_mixer_sink_input_push_volume;
stream_class->change_is_muted = gvc_mixer_sink_input_change_is_muted;
- stream_class->is_running = gvc_mixer_sink_input_is_running;
g_type_class_add_private (klass, sizeof (GvcMixerSinkInputPrivate));
}
@@ -176,11 +154,6 @@ gvc_mixer_sink_input_dispose (GObject *object)
mixer_sink_input = GVC_MIXER_SINK_INPUT (object);
- if (mixer_sink_input->priv->change_volume_op) {
- pa_operation_unref(mixer_sink_input->priv->change_volume_op);
- mixer_sink_input->priv->change_volume_op = NULL;
- }
-
G_OBJECT_CLASS (gvc_mixer_sink_input_parent_class)->dispose (object);
}
diff --git a/gnome-volume-control/src/gvc-mixer-sink.c b/gnome-volume-control/src/gvc-mixer-sink.c
index 218f9cd..06e5af6 100644
--- a/gnome-volume-control/src/gvc-mixer-sink.c
+++ b/gnome-volume-control/src/gvc-mixer-sink.c
@@ -35,7 +35,7 @@
struct GvcMixerSinkPrivate
{
- pa_operation *change_volume_op;
+ gpointer dummy;
};
static void gvc_mixer_sink_class_init (GvcMixerSinkClass *klass);
@@ -46,14 +46,13 @@ static void gvc_mixer_sink_dispose (GObject *object);
G_DEFINE_TYPE (GvcMixerSink, gvc_mixer_sink, GVC_TYPE_MIXER_STREAM)
static gboolean
-gvc_mixer_sink_push_volume (GvcMixerStream *stream)
+gvc_mixer_sink_push_volume (GvcMixerStream *stream, gpointer *op)
{
pa_operation *o;
guint index;
GvcChannelMap *map;
pa_context *context;
const pa_cvolume *cv;
- GvcMixerSink *sink = GVC_MIXER_SINK (stream);
index = gvc_mixer_stream_get_index (stream);
@@ -75,10 +74,7 @@ gvc_mixer_sink_push_volume (GvcMixerStream *stream)
return FALSE;
}
- if (sink->priv->change_volume_op != NULL)
- pa_operation_unref (sink->priv->change_volume_op);
-
- sink->priv->change_volume_op = o;
+ *op = o;
return TRUE;
}
@@ -110,23 +106,6 @@ gvc_mixer_sink_change_is_muted (GvcMixerStream *stream,
return TRUE;
}
-static gboolean
-gvc_mixer_sink_is_running (GvcMixerStream *stream)
-{
- GvcMixerSink *sink = GVC_MIXER_SINK (stream);
-
- if (sink->priv->change_volume_op == NULL)
- return FALSE;
-
- if ((pa_operation_get_state(sink->priv->change_volume_op) == PA_OPERATION_RUNNING))
- return TRUE;
-
- pa_operation_unref(sink->priv->change_volume_op);
- sink->priv->change_volume_op = NULL;
-
- return FALSE;
-}
-
static GObject *
gvc_mixer_sink_constructor (GType type,
guint n_construct_properties,
@@ -154,7 +133,6 @@ gvc_mixer_sink_class_init (GvcMixerSinkClass *klass)
stream_class->push_volume = gvc_mixer_sink_push_volume;
stream_class->change_is_muted = gvc_mixer_sink_change_is_muted;
- stream_class->is_running = gvc_mixer_sink_is_running;
g_type_class_add_private (klass, sizeof (GvcMixerSinkPrivate));
}
@@ -175,11 +153,6 @@ gvc_mixer_sink_dispose (GObject *object)
mixer_sink = GVC_MIXER_SINK (object);
- if (mixer_sink->priv->change_volume_op) {
- pa_operation_unref(mixer_sink->priv->change_volume_op);
- mixer_sink->priv->change_volume_op = NULL;
- }
-
G_OBJECT_CLASS (gvc_mixer_sink_parent_class)->dispose (object);
}
diff --git a/gnome-volume-control/src/gvc-mixer-source-output.c b/gnome-volume-control/src/gvc-mixer-source-output.c
index a9cf120..b4cc34d 100644
--- a/gnome-volume-control/src/gvc-mixer-source-output.c
+++ b/gnome-volume-control/src/gvc-mixer-source-output.c
@@ -45,9 +45,10 @@ static void gvc_mixer_source_output_finalize (GObject *object);
G_DEFINE_TYPE (GvcMixerSourceOutput, gvc_mixer_source_output, GVC_TYPE_MIXER_STREAM)
static gboolean
-gvc_mixer_source_output_push_volume (GvcMixerStream *stream)
+gvc_mixer_source_output_push_volume (GvcMixerStream *stream, gpointer *op)
{
/* FIXME: */
+ *op = NULL;
return TRUE;
}
diff --git a/gnome-volume-control/src/gvc-mixer-source.c b/gnome-volume-control/src/gvc-mixer-source.c
index 33b0ada..ae02d85 100644
--- a/gnome-volume-control/src/gvc-mixer-source.c
+++ b/gnome-volume-control/src/gvc-mixer-source.c
@@ -35,7 +35,7 @@
struct GvcMixerSourcePrivate
{
- pa_operation *change_volume_op;
+ gpointer dummy;
};
static void gvc_mixer_source_class_init (GvcMixerSourceClass *klass);
@@ -46,14 +46,13 @@ static void gvc_mixer_source_dispose (GObject *object);
G_DEFINE_TYPE (GvcMixerSource, gvc_mixer_source, GVC_TYPE_MIXER_STREAM)
static gboolean
-gvc_mixer_source_push_volume (GvcMixerStream *stream)
+gvc_mixer_source_push_volume (GvcMixerStream *stream, gpointer *op)
{
pa_operation *o;
guint index;
GvcChannelMap *map;
pa_context *context;
const pa_cvolume *cv;
- GvcMixerSource *source = GVC_MIXER_SOURCE (stream);
index = gvc_mixer_stream_get_index (stream);
@@ -75,10 +74,7 @@ gvc_mixer_source_push_volume (GvcMixerStream *stream)
return FALSE;
}
- if (source->priv->change_volume_op != NULL)
- pa_operation_unref (source->priv->change_volume_op);
-
- source->priv->change_volume_op = o;
+ *op = o;
return TRUE;
}
@@ -110,23 +106,6 @@ gvc_mixer_source_change_is_muted (GvcMixerStream *stream,
return TRUE;
}
-static gboolean
-gvc_mixer_source_is_running (GvcMixerStream *stream)
-{
- GvcMixerSource *source = GVC_MIXER_SOURCE (stream);
-
- if (source->priv->change_volume_op == NULL)
- return FALSE;
-
- if ((pa_operation_get_state(source->priv->change_volume_op) == PA_OPERATION_RUNNING))
- return TRUE;
-
- pa_operation_unref(source->priv->change_volume_op);
- source->priv->change_volume_op = NULL;
-
- return FALSE;
-}
-
static GObject *
gvc_mixer_source_constructor (GType type,
guint n_construct_properties,
@@ -154,7 +133,6 @@ gvc_mixer_source_class_init (GvcMixerSourceClass *klass)
stream_class->push_volume = gvc_mixer_source_push_volume;
stream_class->change_is_muted = gvc_mixer_source_change_is_muted;
- stream_class->is_running = gvc_mixer_source_is_running;
g_type_class_add_private (klass, sizeof (GvcMixerSourcePrivate));
}
@@ -175,11 +153,6 @@ gvc_mixer_source_dispose (GObject *object)
mixer_source = GVC_MIXER_SOURCE (object);
- if (mixer_source->priv->change_volume_op) {
- pa_operation_unref(mixer_source->priv->change_volume_op);
- mixer_source->priv->change_volume_op = NULL;
- }
-
G_OBJECT_CLASS (gvc_mixer_source_parent_class)->dispose (object);
}
diff --git a/gnome-volume-control/src/gvc-mixer-stream.c b/gnome-volume-control/src/gvc-mixer-stream.c
index 7efee99..e48a715 100644
--- a/gnome-volume-control/src/gvc-mixer-stream.c
+++ b/gnome-volume-control/src/gvc-mixer-stream.c
@@ -49,6 +49,7 @@ struct GvcMixerStreamPrivate
gboolean can_decibel;
gboolean is_event_stream;
pa_volume_t base_volume;
+ pa_operation *change_volume_op;
};
enum
@@ -501,7 +502,7 @@ gvc_mixer_stream_constructor (GType type,
}
static gboolean
-gvc_mixer_stream_real_push_volume (GvcMixerStream *stream)
+gvc_mixer_stream_real_push_volume (GvcMixerStream *stream, gpointer *op)
{
return FALSE;
}
@@ -516,9 +517,15 @@ gvc_mixer_stream_real_change_is_muted (GvcMixerStream *stream,
gboolean
gvc_mixer_stream_push_volume (GvcMixerStream *stream)
{
+ pa_operation *op;
gboolean ret;
g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), FALSE);
- ret = GVC_MIXER_STREAM_GET_CLASS (stream)->push_volume (stream);
+ ret = GVC_MIXER_STREAM_GET_CLASS (stream)->push_volume (stream, (gpointer *) &op);
+ if (ret) {
+ if (stream->priv->change_volume_op != NULL)
+ pa_operation_unref (stream->priv->change_volume_op);
+ stream->priv->change_volume_op = op;
+ }
return ret;
}
@@ -535,8 +542,15 @@ gvc_mixer_stream_change_is_muted (GvcMixerStream *stream,
gboolean
gvc_mixer_stream_is_running (GvcMixerStream *stream)
{
- if (GVC_MIXER_STREAM_GET_CLASS (stream)->is_running != NULL)
- return GVC_MIXER_STREAM_GET_CLASS (stream)->is_running (stream);
+ if (stream->priv->change_volume_op == NULL)
+ return FALSE;
+
+ if ((pa_operation_get_state(stream->priv->change_volume_op) == PA_OPERATION_RUNNING))
+ return TRUE;
+
+ pa_operation_unref(stream->priv->change_volume_op);
+ stream->priv->change_volume_op = NULL;
+
return FALSE;
}
@@ -677,5 +691,10 @@ gvc_mixer_stream_finalize (GObject *object)
g_free (mixer_stream->priv->icon_name);
mixer_stream->priv->icon_name = NULL;
+ if (mixer_stream->priv->change_volume_op) {
+ pa_operation_unref(mixer_stream->priv->change_volume_op);
+ mixer_stream->priv->change_volume_op = NULL;
+ }
+
G_OBJECT_CLASS (gvc_mixer_stream_parent_class)->finalize (object);
}
diff --git a/gnome-volume-control/src/gvc-mixer-stream.h b/gnome-volume-control/src/gvc-mixer-stream.h
index fe33bb6..fb45c6f 100644
--- a/gnome-volume-control/src/gvc-mixer-stream.h
+++ b/gnome-volume-control/src/gvc-mixer-stream.h
@@ -48,10 +48,9 @@ typedef struct
GObjectClass parent_class;
/* vtable */
- gboolean (*push_volume) (GvcMixerStream *stream);
+ gboolean (*push_volume) (GvcMixerStream *stream, gpointer *operation);
gboolean (*change_is_muted) (GvcMixerStream *stream,
gboolean is_muted);
- gboolean (*is_running) (GvcMixerStream *stream);
} GvcMixerStreamClass;
GType gvc_mixer_stream_get_type (void);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]