@@ -20,6 +20,7 @@ typedef struct {
20
20
21
21
gulong mixer_signal_handler_id ;
22
22
gulong params_signal_handler_id ;
23
+ gulong properties_signal_handler_id ;
23
24
gulong state_change_handler_id ;
24
25
25
26
guint id ;
@@ -70,6 +71,8 @@ static GParamSpec *astal_wp_node_properties[ASTAL_WP_NODE_N_PROPERTIES] = {
70
71
NULL ,
71
72
};
72
73
74
+ static void astal_wp_node_pw_properties_changed (AstalWpNode * self );
75
+
73
76
void astal_wp_node_update_volume (AstalWpNode * self ) {
74
77
AstalWpNodePrivate * priv = astal_wp_node_get_instance_private (self );
75
78
@@ -436,12 +439,16 @@ void astal_wp_node_set_node(AstalWpNode *self, WpNode *node) {
436
439
if (node != NULL && WP_IS_NODE (node )) {
437
440
if (priv -> node != NULL ) {
438
441
g_signal_handler_disconnect (priv -> node , priv -> params_signal_handler_id );
442
+ g_signal_handler_disconnect (priv -> node , priv -> properties_signal_handler_id );
439
443
g_signal_handler_disconnect (priv -> node , priv -> state_change_handler_id );
440
444
}
441
445
g_clear_object (& priv -> node );
442
446
priv -> node = g_object_ref (node );
443
447
priv -> params_signal_handler_id = g_signal_connect_swapped (
444
448
priv -> node , "params-changed" , G_CALLBACK (astal_wp_node_params_changed ), self );
449
+ priv -> properties_signal_handler_id =
450
+ g_signal_connect_swapped (priv -> node , "notify::properties" ,
451
+ G_CALLBACK (astal_wp_node_pw_properties_changed ), self );
445
452
priv -> state_change_handler_id = g_signal_connect_swapped (
446
453
priv -> node , "state-changed" , G_CALLBACK (astal_wp_node_state_changed ), self );
447
454
}
@@ -670,6 +677,10 @@ void astal_wp_node_params_changed(AstalWpNode *self, const gchar *id) {
670
677
(* klass -> params_changed )(self , id );
671
678
}
672
679
680
+ static void astal_wp_node_pw_properties_changed (AstalWpNode * self ) {
681
+ astal_wp_node_params_changed (self , "Props" );
682
+ }
683
+
673
684
static void astal_wp_node_init (AstalWpNode * self ) {
674
685
AstalWpNodePrivate * priv = astal_wp_node_get_instance_private (self );
675
686
priv -> node = NULL ;
0 commit comments