diff options
author | Giovanni Campagna <gcampagna@src.gnome.org> | 2012-10-18 19:45:56 +0200 |
---|---|---|
committer | Giovanni Campagna <gcampagna@src.gnome.org> | 2012-12-08 15:45:28 +0100 |
commit | 740bab171443cda76d27ca77ac31717475ad51dd (patch) | |
tree | 91a2fbe9b71d6939b04149d963cbaae38eab6ef6 | |
parent | eab2bf3eeabc5445c7c2168dadb732c4b7a45deb (diff) | |
download | libgnome-volume-control-740bab171443cda76d27ca77ac31717475ad51dd.tar.gz |
Gvc: make GvcMixerStreamPort a boxed type
It's a prerequisite for accessing it from JS
https://bugzilla.gnome.org/show_bug.cgi?id=675902
-rw-r--r-- | gvc-mixer-control.c | 4 | ||||
-rw-r--r-- | gvc-mixer-stream.c | 32 | ||||
-rw-r--r-- | gvc-mixer-stream.h | 3 |
3 files changed, 28 insertions, 11 deletions
diff --git a/gvc-mixer-control.c b/gvc-mixer-control.c index 3492925..b6f6a39 100644 --- a/gvc-mixer-control.c +++ b/gvc-mixer-control.c @@ -1470,7 +1470,7 @@ update_sink (GvcMixerControl *control, for (i = 0; i < info->n_ports; i++) { GvcMixerStreamPort *port; - port = g_new0 (GvcMixerStreamPort, 1); + port = g_slice_new0 (GvcMixerStreamPort); port->port = g_strdup (info->ports[i]->name); port->human_port = g_strdup (info->ports[i]->description); port->priority = info->ports[i]->priority; @@ -1598,7 +1598,7 @@ update_source (GvcMixerControl *control, for (i = 0; i < info->n_ports; i++) { GvcMixerStreamPort *port; - port = g_new0 (GvcMixerStreamPort, 1); + port = g_slice_new0 (GvcMixerStreamPort); port->port = g_strdup (info->ports[i]->name); port->human_port = g_strdup (info->ports[i]->description); port->priority = info->ports[i]->priority; diff --git a/gvc-mixer-stream.c b/gvc-mixer-stream.c index 5a5c8e6..d3e01b6 100644 --- a/gvc-mixer-stream.c +++ b/gvc-mixer-stream.c @@ -88,6 +88,30 @@ static void gvc_mixer_stream_finalize (GObject *object); G_DEFINE_ABSTRACT_TYPE (GvcMixerStream, gvc_mixer_stream, G_TYPE_OBJECT) +static void +free_port (GvcMixerStreamPort *p) +{ + g_free (p->port); + g_free (p->human_port); + g_slice_free (GvcMixerStreamPort, p); +} + +static GvcMixerStreamPort * +dup_port (GvcMixerStreamPort *p) +{ + GvcMixerStreamPort *m; + + m = g_slice_new (GvcMixerStreamPort); + + *m = *p; + m->port = g_strdup (p->port); + m->human_port = g_strdup (p->human_port); + + return m; +} + +G_DEFINE_BOXED_TYPE (GvcMixerStreamPort, gvc_mixer_stream_port, dup_port, free_port) + static guint32 get_next_stream_serial (void) { @@ -946,14 +970,6 @@ gvc_mixer_stream_init (GvcMixerStream *stream) } static void -free_port (GvcMixerStreamPort *p) -{ - g_free (p->port); - g_free (p->human_port); - g_free (p); -} - -static void gvc_mixer_stream_finalize (GObject *object) { GvcMixerStream *mixer_stream; diff --git a/gvc-mixer-stream.h b/gvc-mixer-stream.h index 846f2e0..435f933 100644 --- a/gvc-mixer-stream.h +++ b/gvc-mixer-stream.h @@ -64,7 +64,8 @@ typedef struct gboolean available; } GvcMixerStreamPort; -GType gvc_mixer_stream_get_type (void); +GType gvc_mixer_stream_port_get_type (void) G_GNUC_CONST; +GType gvc_mixer_stream_get_type (void) G_GNUC_CONST; guint gvc_mixer_stream_get_index (GvcMixerStream *stream); guint gvc_mixer_stream_get_id (GvcMixerStream *stream); |