[−][src]Struct sdl2::EventSubsystem
Methods
impl EventSubsystem
[src]
pub fn flush_event(&self, event_type: EventType)
[src]
Removes all events in the event queue that match the specified event type.
pub fn flush_events(&self, min_type: u32, max_type: u32)
[src]
Removes all events in the event queue that match the specified type range.
pub fn peek_events<B>(&self, max_amount: u32) -> B where
B: FromIterator<Event>,
[src]
B: FromIterator<Event>,
Reads the events at the front of the event queue, until the maximum amount of events is read.
The events will not be removed from the queue.
Example
use sdl2::event::Event; let sdl_context = sdl2::init().unwrap(); let event_subsystem = sdl_context.event().unwrap(); // Read up to 1024 events let events: Vec<Event> = event_subsystem.peek_events(1024); // Print each one for event in events { println!("{:?}", event); }
pub fn push_event(&self, event: Event) -> Result<(), String>
[src]
Pushes an event to the event queue.
pub unsafe fn register_event(&self) -> Result<u32, String>
[src]
Register a custom SDL event.
When pushing a user event, you must make sure that the type_
field is set to a
registered SDL event number.
The code
, data1
, and data2
fields can be used to store user defined data.
See the SDL documentation for more information.
Example
let sdl = sdl2::init().unwrap(); let ev = sdl.event().unwrap(); let custom_event_type_id = unsafe { ev.register_event().unwrap() }; let event = sdl2::event::Event::User { timestamp: 0, window_id: 0, type_: custom_event_type_id, code: 456, data1: 0x1234 as *mut libc::c_void, data2: 0x5678 as *mut libc::c_void, }; ev.push_event(event);
pub unsafe fn register_events(&self, nr: u32) -> Result<Vec<u32>, String>
[src]
Registers custom SDL events.
Returns an error, if no more user events can be created.
pub fn register_custom_event<T: Any>(&self) -> Result<(), String>
[src]
pub fn push_custom_event<T: Any>(&self, event: T) -> Result<(), String>
[src]
Push a custom event
If the event type T
was not registered using
register_custom_event,
this method will panic.
Example: pushing and receiving a custom event
struct SomeCustomEvent { a: i32 } let sdl = sdl2::init().unwrap(); let ev = sdl.event().unwrap(); let mut ep = sdl.event_pump().unwrap(); ev.register_custom_event::<SomeCustomEvent>().unwrap(); let event = SomeCustomEvent { a: 42 }; ev.push_custom_event(event); let received = ep.poll_event().unwrap(); // or within a for event in ep.poll_iter() if received.is_user_event() { let e2 = received.as_user_event_type::<SomeCustomEvent>().unwrap(); assert_eq!(e2.a, 42); }
pub fn event_sender(&self) -> EventSender
[src]
Create an event sender that can be sent to other threads.
An EventSender
will not keep the event subsystem alive. If the event subsystem is
shut down calls to push_event
and push_custom_event
will return errors.
impl EventSubsystem
[src]
Trait Implementations
impl Clone for EventSubsystem
[src]
fn clone(&self) -> EventSubsystem
[src]
fn clone_from(&mut self, source: &Self)
1.0.0[src]
impl Sync for EventSubsystem
[src]
Auto Trait Implementations
impl !RefUnwindSafe for EventSubsystem
impl !Send for EventSubsystem
impl Unpin for EventSubsystem
impl !UnwindSafe for EventSubsystem
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,