Ereigniszustellung und Hostgrenzen korrigieren und Change archivieren
This commit is contained in:
@@ -14,5 +14,5 @@ path = "src/main.rs"
|
||||
tb-frontend.workspace = true
|
||||
tb-vm.workspace = true
|
||||
tb-runtime.workspace = true
|
||||
tb-ui.workspace = true
|
||||
tb-ui = { workspace = true, features = ["terminal"] }
|
||||
anyhow.workspace = true
|
||||
|
||||
@@ -551,6 +551,20 @@ impl Host for PipeHost {
|
||||
self.puffer.pop_front()
|
||||
}
|
||||
|
||||
fn warten(&mut self, deadline_ms: Option<u64>) -> Option<Ereignis> {
|
||||
if let Some(event) = self.next_event(false) {
|
||||
return Some(event);
|
||||
}
|
||||
if let Some(deadline) = deadline_ms {
|
||||
std::thread::sleep(std::time::Duration::from_millis(
|
||||
deadline.saturating_sub(self.jetzt_ms()),
|
||||
));
|
||||
None
|
||||
} else {
|
||||
self.next_event(true).or(Some(Ereignis::Ende))
|
||||
}
|
||||
}
|
||||
|
||||
fn jetzt_ms(&mut self) -> u64 {
|
||||
self.start.elapsed().as_millis() as u64
|
||||
}
|
||||
|
||||
@@ -265,6 +265,12 @@ impl tb_runtime::host::Host for EreignisHost {
|
||||
}
|
||||
}
|
||||
|
||||
fn warten(&mut self, deadline_ms: Option<u64>) -> Option<tb_runtime::host::Ereignis> {
|
||||
if let Some(event) = self.next_event(false) {
|
||||
return Some(event);
|
||||
}
|
||||
self.inner.warten(deadline_ms)
|
||||
}
|
||||
fn jetzt_ms(&mut self) -> u64 {
|
||||
self.inner.jetzt_ms()
|
||||
}
|
||||
@@ -318,6 +324,12 @@ impl tb_runtime::host::Host for UhrHost {
|
||||
fn next_event(&mut self, blockierend: bool) -> Option<tb_runtime::host::Ereignis> {
|
||||
self.inner.next_event(blockierend)
|
||||
}
|
||||
fn warten(&mut self, deadline_ms: Option<u64>) -> Option<tb_runtime::host::Ereignis> {
|
||||
if let Some(event) = self.next_event(false) {
|
||||
return Some(event);
|
||||
}
|
||||
self.inner.warten(deadline_ms)
|
||||
}
|
||||
fn jetzt_ms(&mut self) -> u64 {
|
||||
let jetzt = self.inner.jetzt_ms();
|
||||
self.inner.uhr_vorruecken(self.schritt_ms);
|
||||
|
||||
Reference in New Issue
Block a user