summaryrefslogtreecommitdiff
path: root/src/audio.c
diff options
context:
space:
mode:
authorkotontrion <[email protected]>2024-08-20 11:50:05 +0200
committerkotontrion <[email protected]>2024-08-20 11:50:05 +0200
commit7706d24965a268b6075d3fb5557ef6b96c889483 (patch)
tree2a0a544c6b2e67d5e218d68c76c3282ce84889b2 /src/audio.c
parent99dc6d3fbc99b955882c1d471c15e077cb44a45a (diff)
add property for linear or cubic volume scale
Diffstat (limited to 'src/audio.c')
-rw-r--r--src/audio.c44
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)