Go to file
Joe Wilm 2ee658048a Fix busy loop in X11 WaitEventsIterator
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.
2017-02-15 08:34:24 -08:00
examples Fix unreachable patterns 2017-01-28 16:21:41 +01:00
src Fix busy loop in X11 WaitEventsIterator 2017-02-15 08:34:24 -08:00
tests Wrap the temporarily stored user callback in a type to enforce 2017-02-05 12:51:09 +11:00
.gitattributes Initial commit 2014-07-27 11:41:26 +02:00
.gitignore win32: Bump user32-sys req for MapVirtualKeyA 2015-09-22 14:01:27 -04:00
.gitmodules Add basic support for Android 2014-09-11 18:28:07 +02:00
.travis.yml Fix Travis iOS build 2016-12-15 21:34:37 -06:00
appveyor.yml Fix the appveyor build 2015-09-24 08:37:52 +02:00
Cargo.toml Add categories 2017-01-31 10:01:36 +01:00
LICENSE Initial commit 2014-07-27 11:41:26 +02:00
README.md Forgot OpenGL 2016-10-31 17:33:36 +01:00

winit - Cross-platform window creation and management in Rust

Docs.rs

Build Status Build status

[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,
            _ => ()
        }
    }
}