MCPcopy Create free account
hub / github.com/Jonesey13/multiinput-rust / read_input_buffer

Function read_input_buffer

src/rawinput.rs:44–97  ·  view source on GitHub ↗
(event_queue: &mut VecDeque<RawEvent>, devices: &mut Devices)

Source from the content-addressed store, hash-verified

42}
43
44fn read_input_buffer(event_queue: &mut VecDeque<RawEvent>, devices: &mut Devices) {
45 unsafe {
46 let mut array_alloc: [u8; 16000] = MaybeUninit::uninit().assume_init();
47 let mut buffer_size: UINT = 0;
48
49 let mut numberofelements: i32 = GetRawInputBuffer(
50 ptr::null_mut(),
51 &mut buffer_size,
52 mem::size_of::<RAWINPUTHEADER>() as UINT,
53 ) as INT;
54
55 if numberofelements == -1 {
56 panic!("GetRawInputBuffer Gave Error on First Call!");
57 }
58 buffer_size = 1024;
59 numberofelements = GetRawInputBuffer(
60 array_alloc.as_mut_ptr() as PRAWINPUT,
61 &mut buffer_size,
62 mem::size_of::<RAWINPUTHEADER>() as UINT,
63 ) as INT;
64
65 if numberofelements == -1 {
66 panic!("GetRawInputBuffer Gave Error on Second Call!");
67 }
68
69 let mut array_ptr = array_alloc.as_mut_ptr();
70
71 for _ in 0..numberofelements as u32 {
72 let header = (*(array_ptr as *mut RAWINPUT)).header;
73 let raw_input = *(array_ptr as *mut RAWINPUT);
74 next_raw_input_block(&mut array_ptr);
75 let pos = match devices.device_map.get(&header.hDevice) {
76 Some(item) => (*item).clone(),
77 None => continue,
78 };
79 match raw_input.header.dwType {
80 RIM_TYPEMOUSE => {
81 event_queue.extend(process_mouse_data(&raw_input.data.mouse(), pos));
82 }
83 RIM_TYPEKEYBOARD => {
84 event_queue.extend(process_keyboard_data(&raw_input.data.keyboard(), pos));
85 }
86 RIM_TYPEHID => {
87 event_queue.extend(process_joystick_data(
88 &raw_input.data.hid(),
89 pos,
90 &mut devices.joysticks[pos],
91 ));
92 }
93 _ => (),
94 }
95 }
96 }
97}
98
99pub fn get_event(event_queue: &mut VecDeque<RawEvent>, devices: &mut Devices) -> Option<RawEvent> {
100 if event_queue.is_empty() {

Callers 1

get_eventFunction · 0.85

Calls 4

next_raw_input_blockFunction · 0.85
process_mouse_dataFunction · 0.85
process_keyboard_dataFunction · 0.85
process_joystick_dataFunction · 0.85

Tested by

no test coverage detected