diff options
Diffstat (limited to 'src/audio.c')
-rw-r--r-- | src/audio.c | 44 |
1 files changed, 17 insertions, 27 deletions
diff --git a/src/audio.c b/src/audio.c index 9c2841b..15582d7 100644 --- a/src/audio.c +++ b/src/audio.c @@ -4,6 +4,7 @@ #include "device.h" #include "endpoint.h" +#include "glib-object.h" #include "wp.h" struct _AstalWpAudio { @@ -382,34 +383,10 @@ static void astal_wp_audio_object_removed(AstalWpAudio *self, gpointer object) { } } -/** - * astal_wp_audio_get_default - * - * gets the default audio object. - * - * Returns: (nullable) (transfer none) - */ -AstalWpAudio *astal_wp_audio_get_default() { - static AstalWpAudio *self = NULL; - - if (self == NULL) self = g_object_new(ASTAL_WP_TYPE_AUDIO, NULL); - - return self; -} - -/** - * astal_wp_get_default_audio - * - * gets the default audio object. This function does the same as [[email protected]_default] - * - * Returns: (nullable) (transfer none) - */ -AstalWpAudio *astal_wp_get_default_audio() { return astal_wp_audio_get_default(); } - -static void astal_wp_audio_init(AstalWpAudio *self) { +AstalWpAudio *astal_wp_audio_new(AstalWpWp *wp) { + AstalWpAudio *self = g_object_new(ASTAL_WP_TYPE_AUDIO, NULL); AstalWpAudioPrivate *priv = astal_wp_audio_get_instance_private(self); - - priv->wp = astal_wp_wp_get_default(); + priv->wp = g_object_ref(wp); g_signal_connect_swapped(priv->wp, "endpoint-added", G_CALLBACK(astal_wp_audio_object_added), self); @@ -419,11 +396,24 @@ static void astal_wp_audio_init(AstalWpAudio *self) { self); g_signal_connect_swapped(priv->wp, "device-removed", G_CALLBACK(astal_wp_audio_device_removed), self); + + return self; +} + +static void astal_wp_audio_dispose(GObject *object) { + AstalWpAudio *self = ASTAL_WP_AUDIO(object); + AstalWpAudioPrivate *priv = astal_wp_audio_get_instance_private(self); + g_clear_object(&priv->wp); +} + +static void astal_wp_audio_init(AstalWpAudio *self) { + AstalWpAudioPrivate *priv = astal_wp_audio_get_instance_private(self); } static void astal_wp_audio_class_init(AstalWpAudioClass *class) { GObjectClass *object_class = G_OBJECT_CLASS(class); object_class->get_property = astal_wp_audio_get_property; + object_class->dispose = astal_wp_audio_dispose; /** * AstalWpAudio:microphones: (type GList(AstalWpEndpoint)) (transfer container) |