mirror of
https://github.com/rust-windowing/winit.git
synced 2026-08-31 05:40:04 -04:00
Fix potentially unaligned references in X11 device
Fixes #3125 Signed-off-by: John Nunley <dev@notgull.net>
This commit is contained in:
committed by
Kirill Chibisov
parent
b1bd0f77fb
commit
ea8604e175
@@ -28,7 +28,7 @@ use std::{
|
|||||||
collections::{HashMap, HashSet},
|
collections::{HashMap, HashSet},
|
||||||
ffi::CStr,
|
ffi::CStr,
|
||||||
fmt,
|
fmt,
|
||||||
mem::{self, MaybeUninit},
|
mem::MaybeUninit,
|
||||||
ops::Deref,
|
ops::Deref,
|
||||||
os::{
|
os::{
|
||||||
raw::*,
|
raw::*,
|
||||||
@@ -1052,12 +1052,10 @@ impl Device {
|
|||||||
|
|
||||||
if Device::physical_device(info) {
|
if Device::physical_device(info) {
|
||||||
// Identify scroll axes
|
// Identify scroll axes
|
||||||
for class_ptr in Device::classes(info) {
|
for &class_ptr in Device::classes(info) {
|
||||||
let class = unsafe { &**class_ptr };
|
let ty = unsafe { (*class_ptr)._type };
|
||||||
if class._type == ffi::XIScrollClass {
|
if ty == ffi::XIScrollClass {
|
||||||
let info = unsafe {
|
let info = unsafe { &*(class_ptr as *const ffi::XIScrollClassInfo) };
|
||||||
mem::transmute::<&ffi::XIAnyClassInfo, &ffi::XIScrollClassInfo>(class)
|
|
||||||
};
|
|
||||||
scroll_axes.push((
|
scroll_axes.push((
|
||||||
info.number,
|
info.number,
|
||||||
ScrollAxis {
|
ScrollAxis {
|
||||||
@@ -1085,12 +1083,10 @@ impl Device {
|
|||||||
|
|
||||||
fn reset_scroll_position(&mut self, info: &ffi::XIDeviceInfo) {
|
fn reset_scroll_position(&mut self, info: &ffi::XIDeviceInfo) {
|
||||||
if Device::physical_device(info) {
|
if Device::physical_device(info) {
|
||||||
for class_ptr in Device::classes(info) {
|
for &class_ptr in Device::classes(info) {
|
||||||
let class = unsafe { &**class_ptr };
|
let ty = unsafe { (*class_ptr)._type };
|
||||||
if class._type == ffi::XIValuatorClass {
|
if ty == ffi::XIValuatorClass {
|
||||||
let info = unsafe {
|
let info = unsafe { &*(class_ptr as *const ffi::XIValuatorClassInfo) };
|
||||||
mem::transmute::<&ffi::XIAnyClassInfo, &ffi::XIValuatorClassInfo>(class)
|
|
||||||
};
|
|
||||||
if let Some(&mut (_, ref mut axis)) = self
|
if let Some(&mut (_, ref mut axis)) = self
|
||||||
.scroll_axes
|
.scroll_axes
|
||||||
.iter_mut()
|
.iter_mut()
|
||||||
|
|||||||
Reference in New Issue
Block a user