mirror of
https://github.com/fluxerapp/fluxer
synced 2026-10-17 13:05:32 +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
+8
-3
@@ -266,7 +266,11 @@ impl FreedesktopNotifications {
|
|||||||
let method_conn = open_blocking_connection()
|
let method_conn = open_blocking_connection()
|
||||||
.map_err(|err| generic_error(format!("notifications client init failed: {err}")))?;
|
.map_err(|err| generic_error(format!("notifications client init failed: {err}")))?;
|
||||||
let stop_signal_thread = Arc::new(AtomicBool::new(false));
|
let stop_signal_thread = Arc::new(AtomicBool::new(false));
|
||||||
let signal_thread = spawn_signal_thread(event_callback.clone(), stop_signal_thread.clone())
|
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}")))?;
|
.map_err(|err| generic_error(format!("notifications client init failed: {err}")))?;
|
||||||
|
|
||||||
Ok(Self {
|
Ok(Self {
|
||||||
@@ -536,6 +540,7 @@ fn build_hints(hints: &NotifyHints) -> HashMap<&'static str, Value<'_>> {
|
|||||||
|
|
||||||
fn spawn_signal_thread(
|
fn spawn_signal_thread(
|
||||||
event_callback: EventThreadsafeFunction,
|
event_callback: EventThreadsafeFunction,
|
||||||
|
method_conn: BlockingConnection,
|
||||||
stop: Arc<AtomicBool>,
|
stop: Arc<AtomicBool>,
|
||||||
) -> std::result::Result<JoinHandle<()>, String> {
|
) -> std::result::Result<JoinHandle<()>, String> {
|
||||||
let (ready_tx, ready_rx) = mpsc::sync_channel(1);
|
let (ready_tx, ready_rx) = mpsc::sync_channel(1);
|
||||||
@@ -544,13 +549,13 @@ fn spawn_signal_thread(
|
|||||||
.name("fluxer-linux-notifications-signals".to_string())
|
.name("fluxer-linux-notifications-signals".to_string())
|
||||||
.spawn(move || {
|
.spawn(move || {
|
||||||
let setup = future::block_on(async {
|
let setup = future::block_on(async {
|
||||||
let conn = zbus::Connection::session().await?;
|
let conn = method_conn.inner();
|
||||||
let rule = MatchRule::builder()
|
let rule = MatchRule::builder()
|
||||||
.msg_type(MessageType::Signal)
|
.msg_type(MessageType::Signal)
|
||||||
.path(NOTIFY_PATH)?
|
.path(NOTIFY_PATH)?
|
||||||
.interface(NOTIFY_IFACE)?
|
.interface(NOTIFY_IFACE)?
|
||||||
.build();
|
.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))
|
zbus::Result::Ok((conn, stream))
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user