Driver: Add ability to clear all global event handlers.
Closes #32. This should make event handler cleanup considerably easier depending on use case.
This commit is contained in:
@@ -43,6 +43,9 @@ pub(crate) async fn runner(_interconnect: Interconnect, evt_rx: Receiver<EventMe
|
||||
|
||||
global.fire_core_event(evt, ctx).await;
|
||||
},
|
||||
Ok(RemoveGlobalEvents) => {
|
||||
global.remove_handlers();
|
||||
},
|
||||
Ok(AddTrack(store, state, handle)) => {
|
||||
events.push(store);
|
||||
states.push(state);
|
||||
|
||||
@@ -18,6 +18,7 @@ pub enum CoreMessage {
|
||||
AddTrack(Track),
|
||||
SetBitrate(Bitrate),
|
||||
AddEvent(EventData),
|
||||
RemoveGlobalEvents,
|
||||
SetConfig(Config),
|
||||
Mute(bool),
|
||||
Reconnect,
|
||||
|
||||
@@ -12,6 +12,7 @@ pub enum EventMessage {
|
||||
AddGlobalEvent(EventData),
|
||||
AddTrackEvent(usize, EventData),
|
||||
FireCoreEvent(CoreContext),
|
||||
RemoveGlobalEvents,
|
||||
|
||||
AddTrack(EventStore, TrackState, TrackHandle),
|
||||
ChangeState(usize, TrackStateChange),
|
||||
|
||||
@@ -109,6 +109,9 @@ async fn runner(mut config: Config, rx: Receiver<CoreMessage>, tx: Sender<CoreMe
|
||||
Ok(CoreMessage::AddEvent(evt)) => {
|
||||
let _ = interconnect.events.send(EventMessage::AddGlobalEvent(evt));
|
||||
},
|
||||
Ok(CoreMessage::RemoveGlobalEvents) => {
|
||||
let _ = interconnect.events.send(EventMessage::RemoveGlobalEvents);
|
||||
},
|
||||
Ok(CoreMessage::Mute(m)) => {
|
||||
let _ = interconnect.mixer.send(MixerMessage::SetMute(m));
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user