mirror of
https://github.com/italicsjenga/winit-sonoma-fix.git
synced 2024-12-24 06:11:30 +11:00
2ee658048a
WaitEventsIterator implements waiting by first calling XPeekEvent which will block until at least 1 event is queued, and then it delegates to PollEventsIterator to actually handle the new event. PollEventsIterator was previously picky about which events it would process. Events of other types would get stuck at the head of the X event queue, and PollEventsIterator would return None. This initiated a busy loop in the WaitEventsIterator because it would XPeekEvent, see that something is there, and then PollEventsIterator would return None, and the process would repeat. This is resolved by using XNextEvent in the PollEventsIterator instead of XCheckTypedEvent. Any event in the queue will be popped. Even if winit isn't interested in the event, this means XPeekEvent will block again to wait for another event instead of the previous behavior. |
||
---|---|---|
examples | ||
src | ||
tests | ||
.gitattributes | ||
.gitignore | ||
.gitmodules | ||
.travis.yml | ||
appveyor.yml | ||
Cargo.toml | ||
LICENSE | ||
README.md |
winit - Cross-platform window creation and management in Rust
[dependencies]
winit = "0.5"
Documentation
Usage
Winit is a window creation and management library. It can create windows and lets you handle events (for example: the window being resized, a key being pressed, a mouse mouvement, etc.) produced by window.
Winit is designed to be a low-level brick in a hierarchy of libraries. Consequently, in order to show something on the window you need to use the platform-specific getters provided by winit, or another library.
extern crate winit;
fn main() {
let window = winit::Window::new().unwrap();
for event in window.wait_events() {
match event {
winit::Event::Closed => break,
_ => ()
}
}
}