mirror of
https://github.com/FliegendeWurst/cursive.git
synced 2024-11-23 17:35:00 +00:00
Split Cursive::step in process_events and post_events
This commit is contained in:
parent
22886859dd
commit
04d27b352a
@ -837,10 +837,11 @@ impl Cursive {
|
|||||||
/// It will wait for user input (key presses)
|
/// It will wait for user input (key presses)
|
||||||
/// and trigger callbacks accordingly.
|
/// and trigger callbacks accordingly.
|
||||||
///
|
///
|
||||||
/// Calls [`step(&mut self)`] until [`quit(&mut self)`] is called.
|
/// Internally, it calls [`step(&mut self)`] until [`quit(&mut self)`] is
|
||||||
|
/// called.
|
||||||
///
|
///
|
||||||
/// After this function returns, you can call
|
/// After this function returns, you can call it again and it will start a
|
||||||
/// it again and it will start a new loop.
|
/// new loop.
|
||||||
///
|
///
|
||||||
/// [`step(&mut self)`]: #method.step
|
/// [`step(&mut self)`]: #method.step
|
||||||
/// [`quit(&mut self)`]: #method.quit
|
/// [`quit(&mut self)`]: #method.quit
|
||||||
@ -865,6 +866,27 @@ impl Cursive {
|
|||||||
///
|
///
|
||||||
/// [`run(&mut self)`]: #method.run
|
/// [`run(&mut self)`]: #method.run
|
||||||
pub fn step(&mut self) -> bool {
|
pub fn step(&mut self) -> bool {
|
||||||
|
let received_something = self.process_events();
|
||||||
|
self.post_events(received_something);
|
||||||
|
received_something
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Performs the first half of `Self::step()`.
|
||||||
|
///
|
||||||
|
/// This is an advanced method for fine-tuned manual stepping;
|
||||||
|
/// you probably want [`run`][1] or [`step`][2].
|
||||||
|
///
|
||||||
|
/// This processes any pending event or callback. After calling this,
|
||||||
|
/// you will want to call [`post_events`][3] with the result from this
|
||||||
|
/// function.
|
||||||
|
///
|
||||||
|
/// Returns `true` if an event or callback was received,
|
||||||
|
/// and `false` otherwise.
|
||||||
|
///
|
||||||
|
/// [1]: Cursive::run()
|
||||||
|
/// [2]: Cursive::step()
|
||||||
|
/// [3]: Cursive::post_events()
|
||||||
|
pub fn process_events(&mut self) -> bool {
|
||||||
// Things are boring if nothing significant happened.
|
// Things are boring if nothing significant happened.
|
||||||
let mut boring = true;
|
let mut boring = true;
|
||||||
|
|
||||||
@ -888,6 +910,21 @@ impl Cursive {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
!boring
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Performs the second half of `Self::step()`.
|
||||||
|
///
|
||||||
|
/// This is an advanced method for fine-tuned manual stepping;
|
||||||
|
/// you probably want [`run`][1] or [`step`][2].
|
||||||
|
///
|
||||||
|
/// You should call this after [`process_events`][3].
|
||||||
|
///
|
||||||
|
/// [1]: Cursive::run()
|
||||||
|
/// [2]: Cursive::step()
|
||||||
|
/// [3]: Cursive::process_events()
|
||||||
|
pub fn post_events(&mut self, received_something: bool) {
|
||||||
|
let boring = !received_something;
|
||||||
// How many times should we try if it's still boring?
|
// How many times should we try if it's still boring?
|
||||||
// Total duration will be INPUT_POLL_DELAY_MS * repeats
|
// Total duration will be INPUT_POLL_DELAY_MS * repeats
|
||||||
// So effectively fps = 1000 / INPUT_POLL_DELAY_MS / repeats
|
// So effectively fps = 1000 / INPUT_POLL_DELAY_MS / repeats
|
||||||
@ -912,8 +949,6 @@ impl Cursive {
|
|||||||
std::thread::sleep(Duration::from_millis(INPUT_POLL_DELAY_MS));
|
std::thread::sleep(Duration::from_millis(INPUT_POLL_DELAY_MS));
|
||||||
self.boring_frame_count += 1;
|
self.boring_frame_count += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
!boring
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Refresh the screen with the current view tree state.
|
/// Refresh the screen with the current view tree state.
|
||||||
|
Loading…
Reference in New Issue
Block a user