mirror of
https://github.com/fluxerapp/fluxer
synced 2026-10-17 04:55:42 +09:00
fix(desktop): use same connection for sending/recieving notifications (#3505)
This commit is contained in:
1 parent
275cc73f7a
commit
9e15194d6f
1 file changed
+9
-4
@@ -266,8 +266,12 @@ impl FreedesktopNotifications {
|
||||
let method_conn = open_blocking_connection()
|
||||
.map_err(|err| generic_error(format!("notifications client init failed: {err}")))?;
|
||||
let stop_signal_thread = Arc::new(AtomicBool::new(false));
|
||||
let signal_thread = spawn_signal_thread(event_callback.clone(), stop_signal_thread.clone())
|
||||
.map_err(|err| generic_error(format!("notifications client init failed: {err}")))?;
|
||||
let signal_thread = spawn_signal_thread(
|
||||
event_callback.clone(),
|
||||
method_conn.clone(),
|
||||
stop_signal_thread.clone(),
|
||||
)
|
||||
.map_err(|err| generic_error(format!("notifications client init failed: {err}")))?;
|
||||
|
||||
Ok(Self {
|
||||
inner: Arc::new(Inner {
|
||||
@@ -536,6 +540,7 @@ fn build_hints(hints: &NotifyHints) -> HashMap<&'static str, Value<'_>> {
|
||||
|
||||
fn spawn_signal_thread(
|
||||
event_callback: EventThreadsafeFunction,
|
||||
method_conn: BlockingConnection,
|
||||
stop: Arc<AtomicBool>,
|
||||
) -> std::result::Result<JoinHandle<()>, String> {
|
||||
let (ready_tx, ready_rx) = mpsc::sync_channel(1);
|
||||
@@ -544,13 +549,13 @@ fn spawn_signal_thread(
|
||||
.name("fluxer-linux-notifications-signals".to_string())
|
||||
.spawn(move || {
|
||||
let setup = future::block_on(async {
|
||||
let conn = zbus::Connection::session().await?;
|
||||
let conn = method_conn.inner();
|
||||
let rule = MatchRule::builder()
|
||||
.msg_type(MessageType::Signal)
|
||||
.path(NOTIFY_PATH)?
|
||||
.interface(NOTIFY_IFACE)?
|
||||
.build();
|
||||
let stream = MessageStream::for_match_rule(rule, &conn, Some(64)).await?;
|
||||
let stream = MessageStream::for_match_rule(rule, conn, Some(64)).await?;
|
||||
zbus::Result::Ok((conn, stream))
|
||||
});
|
||||
|
||||
|
||||
Reference in new issue
Block a user