Skip to content
Snippets Groups Projects
Commit 236ea5e0 authored by Julian Bouzas's avatar Julian Bouzas
Browse files

proxy: add wp_proxy_sync API and DONE signal

parent 1e6c7488
No related branches found
No related tags found
No related merge requests found
...@@ -35,6 +35,7 @@ enum { ...@@ -35,6 +35,7 @@ enum {
enum enum
{ {
SIGNAL_DESTROYED, SIGNAL_DESTROYED,
SIGNAL_DONE,
LAST_SIGNAL, LAST_SIGNAL,
}; };
...@@ -63,6 +64,9 @@ proxy_event_done (void *data, int seq) ...@@ -63,6 +64,9 @@ proxy_event_done (void *data, int seq)
{ {
WpProxyPrivate *self = wp_proxy_get_instance_private (WP_PROXY(data)); WpProxyPrivate *self = wp_proxy_get_instance_private (WP_PROXY(data));
/* Emit the done signal */
g_signal_emit (data, wp_proxy_signals[SIGNAL_DONE], 0);
/* Make sure the task is valid */ /* Make sure the task is valid */
if (!self->done_task) if (!self->done_task)
return; return;
...@@ -152,7 +156,7 @@ wp_proxy_init_async (GAsyncInitable *initable, int io_priority, ...@@ -152,7 +156,7 @@ wp_proxy_init_async (GAsyncInitable *initable, int io_priority,
pw_proxy_add_listener (self->proxy, &self->listener, &proxy_events, initable); pw_proxy_add_listener (self->proxy, &self->listener, &proxy_events, initable);
/* Trigger the done callback */ /* Trigger the done callback */
pw_proxy_sync(self->proxy, 0); wp_proxy_sync(WP_PROXY(initable));
} }
static gboolean static gboolean
...@@ -199,8 +203,11 @@ wp_proxy_class_init (WpProxyClass * klass) ...@@ -199,8 +203,11 @@ wp_proxy_class_init (WpProxyClass * klass)
/* Signals */ /* Signals */
wp_proxy_signals[SIGNAL_DESTROYED] = wp_proxy_signals[SIGNAL_DESTROYED] =
g_signal_new ("destroyed", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, g_signal_new ("destroyed", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (WpProxyClass, destroyed), NULL, NULL, G_STRUCT_OFFSET (WpProxyClass, destroyed), NULL, NULL, NULL, G_TYPE_NONE,
g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); 0);
wp_proxy_signals[SIGNAL_DONE] =
g_signal_new ("done", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (WpProxyClass, done), NULL, NULL, NULL, G_TYPE_NONE, 0);
} }
guint guint
...@@ -224,3 +231,15 @@ wp_proxy_get_pw_proxy (WpProxy * self) ...@@ -224,3 +231,15 @@ wp_proxy_get_pw_proxy (WpProxy * self)
priv = wp_proxy_get_instance_private (self); priv = wp_proxy_get_instance_private (self);
return priv->proxy; return priv->proxy;
} }
void wp_proxy_sync (WpProxy * self)
{
WpProxyPrivate *priv;
g_return_if_fail (WP_IS_PROXY (self));
priv = wp_proxy_get_instance_private (self);
/* Trigger the done callback */
pw_proxy_sync(priv->proxy, 0);
}
...@@ -24,11 +24,13 @@ struct _WpProxyClass ...@@ -24,11 +24,13 @@ struct _WpProxyClass
GObjectClass parent_class; GObjectClass parent_class;
/* Signals */ /* Signals */
void (*destroyed)(WpProxy *wp_proxy); void (*destroyed)(WpProxy *wp_proxy, gpointer data);
void (*done)(WpProxy *wp_proxy, gpointer data);
}; };
guint wp_proxy_get_global_id (WpProxy * self); guint wp_proxy_get_global_id (WpProxy * self);
gpointer wp_proxy_get_pw_proxy (WpProxy * self); gpointer wp_proxy_get_pw_proxy (WpProxy * self);
void wp_proxy_sync (WpProxy * self);
G_END_DECLS G_END_DECLS
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment