From 3eba038b16cfae3b1ceaec0fdbf6cb75f4e9ee93 Mon Sep 17 00:00:00 2001 From: Luke Date: Thu, 11 Jun 2020 16:25:46 +1200 Subject: [PATCH] Revise cherrypick of edits from meumeu --- rog-core/src/daemon.rs | 4 ++-- rog-core/src/rog_dbus.rs | 15 ++++++++++----- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/rog-core/src/daemon.rs b/rog-core/src/daemon.rs index 75e9eeb3..3b443448 100644 --- a/rog-core/src/daemon.rs +++ b/rog-core/src/daemon.rs @@ -89,7 +89,8 @@ pub async fn start_daemon() -> Result<(), Box> { let (aura_command_send, aura_command_recv) = mpsc::sync_channel::(1); - let (tree, input, effect, mut animatrix_recv, fan_mode, effect_cancel_signal) = dbus_create_tree(); + let (tree, input, effect, mut animatrix_recv, fan_mode, effect_cancel_signal) = + dbus_create_tree(); // We add the tree to the connection so that incoming method calls will be handled. tree.start_receive_send(&*connection); @@ -213,7 +214,6 @@ pub async fn start_daemon() -> Result<(), Box> { .do_command(AnimatrixCommand::WriteImage(image)) .await .unwrap_or_else(|err| warn!("{:?}", err)); - } } }); diff --git a/rog-core/src/rog_dbus.rs b/rog-core/src/rog_dbus.rs index ad4cd1e3..1c41b00a 100644 --- a/rog-core/src/rog_dbus.rs +++ b/rog-core/src/rog_dbus.rs @@ -3,7 +3,10 @@ use crate::rogcore::FanLevel; use dbus::tree::{Factory, MTSync, Method, MethodErr, Signal, Tree}; use rog_client::{DBUS_IFACE, DBUS_PATH}; use std::sync::Arc; -use tokio::sync::Mutex; +use tokio::sync::{ + mpsc::{channel, Receiver, Sender}, + Mutex, +}; pub(super) fn dbus_create_ledmsg_method(msg: LedMsgType) -> Method { let factory = Factory::new_sync::<()>(); @@ -99,7 +102,9 @@ pub(super) fn dbus_create_ledeffect_method(effect: NestedVecType) -> Method>>>>) -> Method { +pub(super) fn dbus_create_animatrix_method( + sender: Mutex>>>, // need mutex only to get interior mutability in MTSync +) -> Method { let factory = Factory::new_sync::<()>(); factory // method for ledmessage @@ -149,13 +154,13 @@ pub(super) fn dbus_create_tree() -> ( Tree, LedMsgType, NestedVecType, - tokio::sync::mpsc::Receiver>>, + Receiver>>, FanModeType, Arc>, ) { let input_bytes: LedMsgType = Arc::new(Mutex::new(None)); let input_effect: NestedVecType = Arc::new(Mutex::new(None)); - let (animatrix_send, animatrix_recv) = tokio::sync::mpsc::channel::>>(1); + let (animatrix_send, animatrix_recv) = channel::>>(1); let fan_mode: FanModeType = Arc::new(Mutex::new(None)); let factory = Factory::new_sync::<()>(); @@ -169,7 +174,7 @@ pub(super) fn dbus_create_tree() -> ( .add_m(dbus_create_ledmsg_method(input_bytes.clone())) .add_m(dbus_create_ledmultizone_method(input_effect.clone())) .add_m(dbus_create_ledeffect_method(input_effect.clone())) - .add_m(dbus_create_animatrix_method(Arc::new(Mutex::new(animatrix_send)))) + .add_m(dbus_create_animatrix_method(Mutex::new(animatrix_send))) .add_m(dbus_create_fan_mode_method(fan_mode.clone())) .add_s(effect_cancel_sig.clone()), ),