summaryrefslogtreecommitdiff
path: root/src/audio.c
diff options
context:
space:
mode:
authorkotontrion <[email protected]>2024-07-19 09:31:05 +0200
committerkotontrion <[email protected]>2024-07-19 09:31:05 +0200
commit31776f401a9ff3124ca3feb1271cd17fb751081e (patch)
tree0374efeeedcaf0d94e2a8c9b9ca4ca4fdcc1d2bb /src/audio.c
parent9eb113163187e1eec0d2e0ac763cd9eeb45cc9ae (diff)
add default speaker/microphone objects
Diffstat (limited to 'src/audio.c')
-rw-r--r--src/audio.c48
1 files changed, 45 insertions, 3 deletions
diff --git a/src/audio.c b/src/audio.c
index 630a09c..3782b2e 100644
--- a/src/audio.c
+++ b/src/audio.c
@@ -3,9 +3,7 @@
#include <wp/wp.h>
#include "endpoint.h"
-#include "glib-object.h"
-#include "glib.h"
-#include "wp.h"
+#include "wireplumber.h"
struct _AstalWpAudio {
GObject parent_instance;
@@ -39,6 +37,8 @@ typedef enum {
ASTAL_WP_AUDIO_PROP_SPEAKERS,
ASTAL_WP_AUDIO_PROP_STREAMS,
ASTAL_WP_AUDIO_PROP_RECORDERS,
+ ASTAL_WP_AUDIO_PROP_DEFAULT_SPEAKER,
+ ASTAL_WP_AUDIO_PROP_DEFAULT_MICROPHONE,
ASTAL_WP_AUDIO_N_PROPERTIES,
} AstalWpAudioProperties;
@@ -208,6 +208,26 @@ AstalWpEndpoint *astal_wp_audio_get_endpoint(AstalWpAudio *self, guint id) {
return endpoint;
}
+/**
+ * astal_wp_audio_get_default_speaker
+ *
+ * Returns: (nullable) (transfer none): gets the default speaker object
+ */
+AstalWpEndpoint *astal_wp_audio_get_default_speaker(AstalWpAudio *self) {
+ AstalWpAudioPrivate *priv = astal_wp_audio_get_instance_private(self);
+ return astal_wp_wp_get_default_speaker(priv->wp);
+}
+
+/**
+ * astal_wp_audio_get_default_microphone
+ *
+ * Returns: (nullable) (transfer none): gets the default microphone object
+ */
+AstalWpEndpoint *astal_wp_audio_get_default_microphone(AstalWpAudio *self) {
+ AstalWpAudioPrivate *priv = astal_wp_audio_get_instance_private(self);
+ return astal_wp_wp_get_default_microphone(priv->wp);
+}
+
static void astal_wp_audio_get_property(GObject *object, guint property_id, GValue *value,
GParamSpec *pspec) {
AstalWpAudio *self = ASTAL_WP_AUDIO(object);
@@ -225,6 +245,12 @@ static void astal_wp_audio_get_property(GObject *object, guint property_id, GVal
case ASTAL_WP_AUDIO_PROP_RECORDERS:
g_value_set_pointer(value, astal_wp_audio_get_recorders(self));
break;
+ case ASTAL_WP_AUDIO_PROP_DEFAULT_SPEAKER:
+ g_value_set_object(value, astal_wp_audio_get_default_speaker(self));
+ break;
+ case ASTAL_WP_AUDIO_PROP_DEFAULT_MICROPHONE:
+ g_value_set_object(value, astal_wp_audio_get_default_microphone(self));
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec);
break;
@@ -354,6 +380,22 @@ static void astal_wp_audio_class_init(AstalWpAudioClass *class) {
*/
astal_wp_audio_properties[ASTAL_WP_AUDIO_PROP_STREAMS] =
g_param_spec_pointer("streams", "streams", "streams", G_PARAM_READABLE);
+ /**
+ * AstalWpAudio:default-speaker:
+ *
+ * The AstalWndpoint object representing the default speaker
+ */
+ astal_wp_audio_properties[ASTAL_WP_AUDIO_PROP_DEFAULT_SPEAKER] =
+ g_param_spec_object("default-speaker", "default-speaker", "default-speaker",
+ ASTAL_WP_TYPE_ENDPOINT, G_PARAM_READABLE);
+ /**
+ * AstalWpAudio:default-microphone:
+ *
+ * The AstalWndpoint object representing the default speaker
+ */
+ astal_wp_audio_properties[ASTAL_WP_AUDIO_PROP_DEFAULT_MICROPHONE] =
+ g_param_spec_object("default-microphone", "default-microphone", "default-microphone",
+ ASTAL_WP_TYPE_ENDPOINT, G_PARAM_READABLE);
g_object_class_install_properties(object_class, ASTAL_WP_AUDIO_N_PROPERTIES,
astal_wp_audio_properties);