forked from MightyPork/crsn
add examples; do not hard-shutdown when screen is closed - destructors did not run!
This commit is contained in:
+11
-9
@@ -97,9 +97,9 @@ impl OpTrait for ScreenOp {
|
||||
let backend: &mut Backend = state.ext_mut();
|
||||
|
||||
if force != 0 {
|
||||
blit(backend)
|
||||
blit(backend)?;
|
||||
} else {
|
||||
blit_maybe(backend)
|
||||
blit_maybe(backend)?;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -143,7 +143,7 @@ impl OpTrait for ScreenOp {
|
||||
backend.buffer[index as usize] = color as u32;
|
||||
|
||||
if backend.opts.auto_blit {
|
||||
blit_maybe(backend);
|
||||
blit_maybe(backend)?;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -274,29 +274,31 @@ fn init(state: &mut RunState, width: Value, height: Value) -> Result<(), Fault>
|
||||
|
||||
backend.window = Some(window);
|
||||
|
||||
blit_maybe(backend);
|
||||
blit_maybe(backend)?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn blit_maybe(backend: &mut Backend) {
|
||||
fn blit_maybe(backend: &mut Backend) -> Result<(), Fault> {
|
||||
if backend.last_render.elapsed() >= backend.opts.frame_rate {
|
||||
blit(backend);
|
||||
blit(backend)
|
||||
} else {
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
fn blit(backend: &mut Backend) {
|
||||
fn blit(backend: &mut Backend) -> Result<(), Fault> {
|
||||
let w = backend.window.as_mut().unwrap();
|
||||
|
||||
if !w.is_open() {
|
||||
// TODO...
|
||||
std::process::exit(0);
|
||||
return Err(Fault::Halt);
|
||||
}
|
||||
|
||||
w.update_with_buffer(&backend.buffer, backend.width, backend.height)
|
||||
.expect("Update screen"); // TODO fault
|
||||
|
||||
backend.last_render = Instant::now();
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn num2key(num: Value) -> Option<Key> {
|
||||
|
||||
Reference in New Issue
Block a user