From 922065f97d9e804f12684cb7c11bd9581790c6fd Mon Sep 17 00:00:00 2001
From: Julian Bouzas <julian.bouzas@collabora.com>
Date: Tue, 18 Jun 2019 10:09:40 -0400
Subject: [PATCH] proxy: add destroyed signal

---
 lib/wp/proxy.c | 17 +++++++++++++++++
 lib/wp/proxy.h |  3 +++
 2 files changed, 20 insertions(+)

diff --git a/lib/wp/proxy.c b/lib/wp/proxy.c
index 8926f6d1..a35e33aa 100644
--- a/lib/wp/proxy.c
+++ b/lib/wp/proxy.c
@@ -32,6 +32,14 @@ enum {
   PROP_PROXY,
 };
 
+enum
+{
+  SIGNAL_DESTROYED,
+  LAST_SIGNAL,
+};
+
+static guint wp_proxy_signals[LAST_SIGNAL] = { 0 };
+
 static void wp_proxy_async_initable_init (gpointer iface, gpointer iface_data);
 
 G_DEFINE_ABSTRACT_TYPE_WITH_CODE (WpProxy, wp_proxy, G_TYPE_OBJECT,
@@ -44,6 +52,9 @@ proxy_event_destroy (void *data)
   WpProxyPrivate *self = wp_proxy_get_instance_private (WP_PROXY(data));
   g_autoptr (WpCore) core = g_weak_ref_get (&self->core);
 
+  /* Emit the destroy signal */
+  g_signal_emit (data, wp_proxy_signals[SIGNAL_DESTROYED], 0);
+
   /* Set the proxy to NULL */
   self->proxy = NULL;
 
@@ -193,6 +204,12 @@ wp_proxy_class_init (WpProxyClass * klass)
   g_object_class_install_property (object_class, PROP_PROXY,
       g_param_spec_pointer ("pw-proxy", "pw-proxy", "The pipewire proxy",
       G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS));
+
+  /* Signals */
+  wp_proxy_signals[SIGNAL_DESTROYED] =
+    g_signal_new ("destroyed", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (WpProxyClass, destroyed), NULL, NULL,
+    g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
 }
 
 void
diff --git a/lib/wp/proxy.h b/lib/wp/proxy.h
index 24bc0dda..6ef85489 100644
--- a/lib/wp/proxy.h
+++ b/lib/wp/proxy.h
@@ -22,6 +22,9 @@ G_DECLARE_DERIVABLE_TYPE (WpProxy, wp_proxy, WP, PROXY, GObject)
 struct _WpProxyClass
 {
   GObjectClass parent_class;
+
+  /* Signals */
+  void (*destroyed)(WpProxy *wp_proxy);
 };
 
 void wp_proxy_register (WpProxy * self);
-- 
GitLab