Skip to content
This repository was archived by the owner on Oct 8, 2025. It is now read-only.

Commit fcfe600

Browse files
committed
settings_daemon: Update brightness on name-owner change
Send events is settings daemon is started after the start of this subscription, or if it is restarted. To get updates when the daemon wasn't running at the start of the stream, z-galaxy/zbus#1389 is also needed. Loss of the name owner should probably also disable any brightness controls, but if that's done by a change of the brightness values and not by a seperate property, we probably can't rely on the ordering of events from different streams...
1 parent 62586d6 commit fcfe600

1 file changed

Lines changed: 31 additions & 1 deletion

File tree

src/settings_daemon.rs

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,11 @@ pub fn subscription(connection: zbus::Connection) -> iced_futures::Subscription<
2626
.receive_max_display_brightness_changed()
2727
.await;
2828
let brightness_stream = settings_daemon.receive_display_brightness_changed().await;
29+
let owner_stream = settings_daemon.0.receive_owner_changed().await.unwrap();
2930

3031
let initial = futures::stream::iter([Event::Sender(tx)]);
3132

33+
let settings_daemon_clone = settings_daemon.clone();
3234
initial.chain(futures::stream_select!(
3335
Box::pin(UnboundedReceiverStream::new(rx).filter_map(move |request| {
3436
let settings_daemon = settings_daemon.clone();
@@ -46,7 +48,35 @@ pub fn subscription(connection: zbus::Connection) -> iced_futures::Subscription<
4648
})),
4749
Box::pin(brightness_stream.filter_map(|evt| async move {
4850
Some(Event::DisplayBrightness(evt.get().await.ok()?))
49-
}))
51+
})),
52+
Box::pin(owner_stream.flat_map(move |owner| {
53+
let settings_daemon = settings_daemon_clone.clone();
54+
async move {
55+
// TODO send None if owner is lost? Needs to be well-ordered. Or tracked
56+
// seperately from brightness.
57+
if owner.is_some() {
58+
return futures::stream::iter(
59+
[
60+
settings_daemon
61+
.display_brightness()
62+
.await
63+
.ok()
64+
.map(Event::DisplayBrightness),
65+
settings_daemon
66+
.max_display_brightness()
67+
.await
68+
.ok()
69+
.map(Event::MaxDisplayBrightness),
70+
]
71+
.into_iter()
72+
.flatten(),
73+
)
74+
.left_stream();
75+
}
76+
futures::stream::empty().right_stream()
77+
}
78+
.flatten_stream()
79+
})),
5080
))
5181
}
5282
.flatten_stream(),

0 commit comments

Comments
 (0)