mirror of
https://github.com/hexedtech/codemp.git
synced 2024-11-22 15:24:48 +01:00
fix: better try_recv mutex logic for cursor ctrl
This commit is contained in:
parent
2a016a6619
commit
ab9c6530cd
1 changed files with 10 additions and 8 deletions
|
@ -67,8 +67,9 @@ impl Controller<Cursor> for CursorController {
|
|||
|
||||
/// try to receive without blocking, but will still block on stream mutex
|
||||
fn try_recv(&self) -> crate::Result<Option<Cursor>> {
|
||||
let mut stream = self.0.stream.blocking_lock();
|
||||
match stream.try_recv() {
|
||||
match self.0.stream.try_lock() {
|
||||
Err(_) => Ok(None),
|
||||
Ok(mut stream) => match stream.try_recv() {
|
||||
Ok(x) => Ok(Some(x.into())),
|
||||
Err(TryRecvError::Empty) => Ok(None),
|
||||
Err(TryRecvError::Closed) => Err(crate::Error::Channel { send: false }),
|
||||
|
@ -78,6 +79,7 @@ impl Controller<Cursor> for CursorController {
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// TODO is this cancelable? so it can be used in tokio::select!
|
||||
// TODO is the result type overkill? should be an option?
|
||||
|
|
Loading…
Reference in a new issue