aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEskil <eskilq@kth.se>2020-10-16 00:22:43 +0200
committerEskil <eskilq@kth.se>2020-10-16 00:22:43 +0200
commit8e4eb0afcd0541c6732ebec71af76f3962f590cc (patch)
treedc3fec8b2a3ca7139cab0a88803ef8570d71f93b
parent905dc8af970b990eb10c5fdebe392a46e1bf2365 (diff)
parentc96eb0279e8d3092988e8d5c49e132d243ddbae4 (diff)
downloadmum-8e4eb0afcd0541c6732ebec71af76f3962f590cc.tar.gz
Merge branch 'audio-refactor' into 'main'
Update state properly when disconnecting from server and on user_state packet Closes #2 See merge request gustav/mum!4
-rw-r--r--mumd/src/audio.rs4
-rw-r--r--mumd/src/network/tcp.rs2
-rw-r--r--mumd/src/state.rs1
3 files changed, 6 insertions, 1 deletions
diff --git a/mumd/src/audio.rs b/mumd/src/audio.rs
index 1445415..edc2f7f 100644
--- a/mumd/src/audio.rs
+++ b/mumd/src/audio.rs
@@ -191,6 +191,10 @@ impl Audio {
pub fn take_receiver(&mut self) -> Option<Receiver<VoicePacketPayload>> {
self.input_channel_receiver.take()
}
+
+ pub fn clear_clients(&mut self) {
+ self.client_streams.lock().unwrap().clear();
+ }
}
impl ClientStream {
diff --git a/mumd/src/network/tcp.rs b/mumd/src/network/tcp.rs
index 6a369e5..ea4ef86 100644
--- a/mumd/src/network/tcp.rs
+++ b/mumd/src/network/tcp.rs
@@ -286,8 +286,8 @@ async fn listen(
ControlPacket::UserState(msg) => {
let mut state = state.lock().unwrap();
let session = msg.get_session();
- state.audio_mut().add_client(msg.get_session()); //TODO
if *state.phase_receiver().borrow() == StatePhase::Connecting {
+ state.audio_mut().add_client(msg.get_session());
state.parse_initial_user_state(*msg);
} else {
state.server_mut().unwrap().parse_user_state(*msg);
diff --git a/mumd/src/state.rs b/mumd/src/state.rs
index b6fe780..68ced10 100644
--- a/mumd/src/state.rs
+++ b/mumd/src/state.rs
@@ -125,6 +125,7 @@ impl State {
self.session_id = None;
self.username = None;
self.server = None;
+ self.audio.clear_clients();
self.phase_watcher
.0