Gvc: make GvcMixerStreamPort a boxed type

It's a prerequisite for accessing it from JS

https://bugzilla.gnome.org/show_bug.cgi?id=675902
This commit is contained in:
Giovanni Campagna 2012-10-18 19:45:56 +02:00
parent eab2bf3eea
commit 740bab1714
3 changed files with 28 additions and 11 deletions

View File

@ -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;

View File

@ -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)
{
@ -945,14 +969,6 @@ gvc_mixer_stream_init (GvcMixerStream *stream)
stream->priv = GVC_MIXER_STREAM_GET_PRIVATE (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)
{

View File

@ -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);