Skip to content

Commit 81ff5bf

Browse files
committed
Send changed signal when using SIGUSR*
Make SIGUSR* signal handlers send a PropertiesChanged signal after modifying the paused state. Fixes the remainder of #832 .
1 parent a87aa9c commit 81ff5bf

File tree

3 files changed

+40
-21
lines changed

3 files changed

+40
-21
lines changed

src/dbus.c

Lines changed: 35 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1001,6 +1001,39 @@ void signal_length_propertieschanged(void)
10011001
g_clear_pointer(&invalidated_builder, g_variant_builder_unref);
10021002
}
10031003

1004+
void signal_paused_propertieschanged(void)
1005+
{
1006+
if(!dbus_conn)
1007+
return;
1008+
1009+
struct dunst_status status = dunst_status_get();
1010+
1011+
GVariantBuilder *builder = g_variant_builder_new(G_VARIANT_TYPE_VARDICT);
1012+
GVariantBuilder *invalidated_builder = g_variant_builder_new(G_VARIANT_TYPE_STRING_ARRAY);
1013+
1014+
g_variant_builder_add(builder,
1015+
"{sv}",
1016+
"paused", g_variant_new_boolean(status.pause_level != 0));
1017+
g_variant_builder_add(builder,
1018+
"{sv}",
1019+
"pauseLevel", g_variant_new_uint32(status.pause_level));
1020+
1021+
g_dbus_connection_emit_signal(dbus_conn,
1022+
NULL,
1023+
FDN_PATH,
1024+
PROPERTIES_IFAC,
1025+
"PropertiesChanged",
1026+
g_variant_new("(sa{sv}as)",
1027+
DUNST_IFAC,
1028+
builder,
1029+
invalidated_builder),
1030+
NULL);
1031+
1032+
g_clear_pointer(&builder, g_variant_builder_unref);
1033+
g_clear_pointer(&invalidated_builder, g_variant_builder_unref);
1034+
1035+
}
1036+
10041037
static void dbus_cb_Notify(
10051038
GDBusConnection *connection,
10061039
const gchar *sender,
@@ -1207,27 +1240,8 @@ gboolean dbus_cb_dunst_Properties_Set(GDBusConnection *connection,
12071240
dunst_status_int(S_PAUSE_LEVEL, targetPauseLevel);
12081241
wake_up();
12091242

1210-
GVariantBuilder *builder = g_variant_builder_new(G_VARIANT_TYPE_VARDICT);
1211-
GVariantBuilder *invalidated_builder = g_variant_builder_new(G_VARIANT_TYPE_STRING_ARRAY);
1212-
g_variant_builder_add(builder,
1213-
"{sv}",
1214-
"paused", g_variant_new_boolean(targetPauseLevel != 0));
1215-
g_variant_builder_add(builder,
1216-
"{sv}",
1217-
"pauseLevel", g_variant_new_uint32(targetPauseLevel));
1218-
g_dbus_connection_emit_signal(connection,
1219-
NULL,
1220-
object_path,
1221-
PROPERTIES_IFAC,
1222-
"PropertiesChanged",
1223-
g_variant_new("(sa{sv}as)",
1224-
interface_name,
1225-
builder,
1226-
invalidated_builder),
1227-
NULL);
1228-
1229-
g_clear_pointer(&builder, g_variant_builder_unref);
1230-
g_clear_pointer(&invalidated_builder, g_variant_builder_unref);
1243+
signal_paused_propertieschanged();
1244+
12311245
return true;
12321246
}
12331247

src/dbus.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ void dbus_teardown(int id);
2121
void signal_notification_closed(struct notification *n, enum reason reason);
2222
void signal_action_invoked(const struct notification *n, const char *identifier);
2323
void signal_length_propertieschanged(void);
24+
void signal_paused_propertieschanged(void);
2425
void signal_history_removed(guint id);
2526
void signal_history_cleared(guint n);
2627
void signal_config_reloaded(char **const configs);

src/dunst.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,8 @@ gboolean pause_signal(gpointer data)
184184
dunst_status_int(S_PAUSE_LEVEL, MAX_PAUSE_LEVEL);
185185
wake_up();
186186

187+
signal_paused_propertieschanged();
188+
187189
return G_SOURCE_CONTINUE;
188190
}
189191

@@ -194,6 +196,8 @@ gboolean unpause_signal(gpointer data)
194196
dunst_status_int(S_PAUSE_LEVEL, 0);
195197
wake_up();
196198

199+
signal_paused_propertieschanged();
200+
197201
return G_SOURCE_CONTINUE;
198202
}
199203

0 commit comments

Comments
 (0)