605 lines
17 KiB
Plaintext
605 lines
17 KiB
Plaintext
module sdl3::sdl;
|
|
|
|
alias EventType = uint;
|
|
|
|
const EventType EVENT_FIRST @builtin = 0;
|
|
|
|
const EventType EVENT_QUIT @builtin = 0x100;
|
|
const EventType EVENT_TERMINATING @builtin = 0x101;
|
|
const EventType EVENT_LOW_MEMORY @builtin = 0x102;
|
|
const EventType EVENT_WILL_ENTER_BACKGROUND @builtin = 0x103;
|
|
const EventType EVENT_DID_ENTER_BACKGROUND @builtin = 0x104;
|
|
const EventType EVENT_WILL_ENTER_FOREGROUND @builtin = 0x105;
|
|
const EventType EVENT_DID_ENTER_FOREGROUND @builtin = 0x106;
|
|
const EventType EVENT_LOCALE_CHANGED @builtin = 0x107;
|
|
const EventType EVENT_SYSTEM_THEME_CHANGED @builtin = 0x108;
|
|
|
|
const EventType EVENT_DISPLAY_ORIENTATION @builtin = 0x151;
|
|
const EventType EVENT_DISPLAY_ADDED @builtin = 0x152;
|
|
const EventType EVENT_DISPLAY_REMOVED @builtin = 0x153;
|
|
const EventType EVENT_DISPLAY_MOVED @builtin = 0x154;
|
|
const EventType EVENT_DISPLAY_DESKTOP_MODE_CHANGED @builtin = 0x155;
|
|
const EventType EVENT_DISPLAY_CURRENT_MODE_CHANGED @builtin = 0x156;
|
|
const EventType EVENT_DISPLAY_CONTENT_SCALE_CHANGED @builtin = 0x157;
|
|
const EventType EVENT_DISPLAY_FIRST @builtin = EVENT_DISPLAY_ORIENTATION;
|
|
const EventType EVENT_DISPLAY_LAST @builtin = EVENT_DISPLAY_CONTENT_SCALE_CHANGED;
|
|
|
|
const EventType EVENT_WINDOW_SHOWN @builtin = 0x202;
|
|
const EventType EVENT_WINDOW_HIDDEN @builtin = 0x203;
|
|
const EventType EVENT_WINDOW_EXPOSED @builtin = 0x204;
|
|
const EventType EVENT_WINDOW_MOVED @builtin = 0x205;
|
|
const EventType EVENT_WINDOW_RESIZED @builtin = 0x206;
|
|
const EventType EVENT_WINDOW_PIXEL_SIZE_CHANGED @builtin = 0x207;
|
|
const EventType EVENT_WINDOW_METAL_VIEW_RESIZED @builtin = 0x208;
|
|
const EventType EVENT_WINDOW_MINIMIZED @builtin = 0x208;
|
|
const EventType EVENT_WINDOW_MAXIMIZED @builtin = 0x209;
|
|
const EventType EVENT_WINDOW_RESTORED @builtin = 0x20a;
|
|
const EventType EVENT_WINDOW_MOUSE_ENTER @builtin = 0x20b;
|
|
const EventType EVENT_WINDOW_MOUSE_LEAVE @builtin = 0x20c;
|
|
const EventType EVENT_WINDOW_FOCUS_GAINED @builtin = 0x20d;
|
|
const EventType EVENT_WINDOW_FOCUS_LOST @builtin = 0x20e;
|
|
const EventType EVENT_WINDOW_CLOSE_REQUESTED @builtin = 0x20f;
|
|
const EventType EVENT_WINDOW_HIT_TEST @builtin = 0x210;
|
|
const EventType EVENT_WINDOW_ICCPROF_CHANGED @builtin = 0x211;
|
|
const EventType EVENT_WINDOW_DISPLAY_CHANGED @builtin = 0x212;
|
|
const EventType EVENT_WINDOW_DISPLAY_SCALE_CHANGED @builtin = 0x213;
|
|
const EventType EVENT_WINDOW_SAFE_AREA_CHANGED @builtin = 0x214;
|
|
const EventType EVENT_WINDOW_OCCLUDED @builtin = 0x215;
|
|
const EventType EVENT_WINDOW_ENTER_FULLSCREEN @builtin = 0x216;
|
|
const EventType EVENT_WINDOW_LEAVE_FULLSCREEN @builtin = 0x217;
|
|
const EventType EVENT_WINDOW_DESTROYED @builtin = 0x218;
|
|
const EventType EVENT_WINDOW_HDR_STATE_CHANGED @builtin = 0x219;
|
|
const EventType EVENT_WINDOW_FIRST @builtin = EVENT_WINDOW_SHOWN;
|
|
const EventType EVENT_WINDOW_LAST @builtin = EVENT_WINDOW_HDR_STATE_CHANGED;
|
|
|
|
const EventType EVENT_KEY_DOWN @builtin = 0x300;
|
|
const EventType EVENT_KEY_UP @builtin = 0x301;
|
|
const EventType EVENT_TEXT_EDITING @builtin = 0x302;
|
|
const EventType EVENT_TEXT_INPUT @builtin = 0x303;
|
|
const EventType EVENT_KEYMAP_CHANGED @builtin = 0x304;
|
|
const EventType EVENT_KEYBOARD_ADDED @builtin = 0x305;
|
|
const EventType EVENT_KEYBOARD_REMOVED @builtin = 0x306;
|
|
const EventType EVENT_TEXT_EDITING_CANDIDATES @builtin = 0x307;
|
|
|
|
const EventType EVENT_MOUSE_MOTION @builtin = 0x400;
|
|
const EventType EVENT_MOUSE_BUTTON_DOWN @builtin = 0x401;
|
|
const EventType EVENT_MOUSE_BUTTON_UP @builtin = 0x402;
|
|
const EventType EVENT_MOUSE_WHEEL @builtin = 0x403;
|
|
const EventType EVENT_MOUSE_ADDED @builtin = 0x404;
|
|
const EventType EVENT_MOUSE_REMOVED @builtin = 0x405;
|
|
|
|
const EventType EVENT_JOYSTICK_AXIS_MOTION @builtin = 0x600;
|
|
const EventType EVENT_JOYSTICK_BALL_MOTION @builtin = 0x601;
|
|
const EventType EVENT_JOYSTICK_HAT_MOTION @builtin = 0x602;
|
|
const EventType EVENT_JOYSTICK_BUTTON_DOWN @builtin = 0x603;
|
|
const EventType EVENT_JOYSTICK_BUTTON_UP @builtin = 0x604;
|
|
const EventType EVENT_JOYSTICK_ADDED @builtin = 0x605;
|
|
const EventType EVENT_JOYSTICK_REMOVED @builtin = 0x606;
|
|
const EventType EVENT_JOYSTICK_BATTERY_UPDATED @builtin = 0x607;
|
|
const EventType EVENT_JOYSTICK_UPDATE_COMPLETE @builtin = 0x608;
|
|
|
|
const EventType EVENT_GAMEPAD_AXIS_MOTION @builtin = 0x650;
|
|
const EventType EVENT_GAMEPAD_BUTTON_DOWN @builtin = 0x651;
|
|
const EventType EVENT_GAMEPAD_BUTTON_UP @builtin = 0x652;
|
|
const EventType EVENT_GAMEPAD_ADDED @builtin = 0x653;
|
|
const EventType EVENT_GAMEPAD_REMOVED @builtin = 0x654;
|
|
const EventType EVENT_GAMEPAD_REMAPPED @builtin = 0x655;
|
|
const EventType EVENT_GAMEPAD_TOUCHPAD_DOWN @builtin = 0x656;
|
|
const EventType EVENT_GAMEPAD_TOUCHPAD_MOTION @builtin = 0x657;
|
|
const EventType EVENT_GAMEPAD_TOUCHPAD_UP @builtin = 0x658;
|
|
const EventType EVENT_GAMEPAD_SENSOR_UPDATE @builtin = 0x659;
|
|
const EventType EVENT_GAMEPAD_UPDATE_COMPLETE @builtin = 0x65a;
|
|
const EventType EVENT_GAMEPAD_STEAM_HANDLE_UPDATED @builtin = 0x65b;
|
|
|
|
const EventType EVENT_FINGER_DOWN @builtin = 0x700;
|
|
const EventType EVENT_FINGER_UP @builtin = 0x701;
|
|
const EventType EVENT_FINGER_MOTION @builtin = 0x702;
|
|
const EventType EVENT_FINGER_CANCELED @builtin = 0x703;
|
|
|
|
|
|
const EventType EVENT_CLIPBOARD_UPDATE @builtin = 0x900;
|
|
|
|
const EventType EVENT_DROP_FILE @builtin = 0x1000;
|
|
const EventType EVENT_DROP_TEXT @builtin = 0x1001;
|
|
const EventType EVENT_DROP_BEGIN @builtin = 0x1002;
|
|
const EventType EVENT_DROP_COMPLETE @builtin = 0x1003;
|
|
const EventType EVENT_DROP_POSITION @builtin = 0x1004;
|
|
|
|
const EventType EVENT_AUDIO_DEVICE_ADDED @builtin = 0x1100;
|
|
const EventType EVENT_AUDIO_DEVICE_REMOVED @builtin = 0x1101;
|
|
const EventType EVENT_AUDIO_DEVICE_FORMAT_CHANGED @builtin = 0x1102;
|
|
|
|
const EventType EVENT_SENSOR_UPDATE @builtin = 0x1200;
|
|
|
|
const EventType EVENT_PEN_PROXIMITY_IN @builtin = 0x1300;
|
|
const EventType EVENT_PEN_PROXIMITY_OUT @builtin = 0x1301;
|
|
const EventType EVENT_PEN_DOWN @builtin = 0x1302;
|
|
const EventType EVENT_PEN_UP @builtin = 0x1303;
|
|
const EventType EVENT_PEN_BUTTON_DOWN @builtin = 0x1304;
|
|
const EventType EVENT_PEN_BUTTON_UP @builtin = 0x1305;
|
|
const EventType EVENT_PEN_MOTION @builtin = 0x1306;
|
|
const EventType EVENT_PEN_AXIS @builtin = 0x1307;
|
|
|
|
const EventType EVENT_CAMERA_DEVICE_ADDED @builtin = 0x1400;
|
|
const EventType EVENT_CAMERA_DEVICE_REMOVED @builtin = 0x1401;
|
|
const EventType EVENT_CAMERA_DEVICE_APPROVED @builtin = 0x1402;
|
|
const EventType EVENT_CAMERA_DEVICE_DENIED @builtin = 0x1403;
|
|
|
|
const EventType EVENT_RENDER_TARGETS_RESET @builtin = 0x2000;
|
|
const EventType EVENT_RENDER_DEVICE_RESET @builtin = 0x2001;
|
|
const EventType EVENT_RENDER_DEVICE_LOST @builtin = 0x2002;
|
|
|
|
const EventType EVENT_PRIVATE0 @builtin = 0x4000;
|
|
const EventType EVENT_PRIVATE1 @builtin = 0x4001;
|
|
const EventType EVENT_PRIVATE2 @builtin = 0x4002;
|
|
const EventType EVENT_PRIVATE3 @builtin = 0x4003;
|
|
|
|
const EventType EVENT_POLL_SENTINEL @builtin = 0x7F00;
|
|
const EventType EVENT_USER @builtin = 0x8000;
|
|
const EventType EVENT_LAST @builtin = 0xFFFF;
|
|
const EventType EVENT_ENUM_PADDING @builtin = 0x7FFFFFFF;
|
|
|
|
|
|
struct CommonEvent {
|
|
uint type;
|
|
uint reserved;
|
|
ulong timestamp;
|
|
}
|
|
|
|
struct DisplayEvent {
|
|
EventType type;
|
|
uint reserved;
|
|
ulong timestamp;
|
|
DisplayID displayID;
|
|
int data1;
|
|
int data2;
|
|
}
|
|
|
|
struct WindowEvent {
|
|
EventType type;
|
|
uint reserved;
|
|
ulong timestamp;
|
|
WindowID windowID;
|
|
int data1;
|
|
int data2;
|
|
}
|
|
|
|
struct KeyboardDeviceEvent {
|
|
EventType type;
|
|
uint reserved;
|
|
ulong timestamp;
|
|
KeyboardID which;
|
|
}
|
|
|
|
struct KeyboardEvent {
|
|
EventType type;
|
|
uint reserved;
|
|
ulong timestamp;
|
|
WindowID windowID;
|
|
KeyboardID which;
|
|
Scancode scancode;
|
|
Keycode key;
|
|
Keymod mod;
|
|
ushort raw;
|
|
bool down;
|
|
bool repeat;
|
|
}
|
|
|
|
struct TextEditingEvent {
|
|
EventType type;
|
|
uint reserved;
|
|
ulong timestamp;
|
|
WindowID windowID;
|
|
ZString text;
|
|
int start;
|
|
int length;
|
|
}
|
|
|
|
struct TextEditingCandidatesEvent {
|
|
EventType type;
|
|
uint reserved;
|
|
ulong timestamp;
|
|
WindowID windowID;
|
|
ZString* candidates;
|
|
int num_candidates;
|
|
int selected_candidate;
|
|
bool horizontal;
|
|
char padding1;
|
|
char padding2;
|
|
char padding3;
|
|
}
|
|
|
|
struct TextInputEvent {
|
|
EventType type;
|
|
uint reserved;
|
|
ulong timestamp;
|
|
WindowID windowID;
|
|
ZString text;
|
|
}
|
|
|
|
struct MouseDeviceEvent {
|
|
EventType type;
|
|
uint reserved;
|
|
ulong timestamp;
|
|
MouseID which;
|
|
}
|
|
|
|
struct MouseMotionEvent {
|
|
EventType type;
|
|
uint reserved;
|
|
ulong timestamp;
|
|
WindowID windowID;
|
|
MouseID which;
|
|
MouseButtonFlags state;
|
|
float x;
|
|
float y;
|
|
float xrel;
|
|
float yrel;
|
|
}
|
|
|
|
struct MouseButtonEvent {
|
|
EventType type;
|
|
uint reserved;
|
|
ulong timestamp;
|
|
WindowID windowID;
|
|
MouseID which;
|
|
char button;
|
|
bool down;
|
|
char clicks;
|
|
char padding;
|
|
float x;
|
|
float y;
|
|
}
|
|
|
|
struct MouseWheelEvent {
|
|
EventType type;
|
|
uint reserved;
|
|
ulong timestamp;
|
|
WindowID windowID;
|
|
MouseID which;
|
|
float x;
|
|
float y;
|
|
MouseWheelDirection direction;
|
|
float mouse_x;
|
|
float mouse_y;
|
|
int integer_x;
|
|
int integer_y;
|
|
}
|
|
|
|
struct JoyAxisEvent {
|
|
EventType type;
|
|
uint reserved;
|
|
ulong timestamp;
|
|
JoystickID which;
|
|
char axis;
|
|
char padding1;
|
|
char padding2;
|
|
char padding3;
|
|
short value;
|
|
ushort padding4;
|
|
}
|
|
|
|
struct JoyBallEvent {
|
|
EventType type;
|
|
uint reserved;
|
|
ulong timestamp;
|
|
JoystickID which;
|
|
char ball;
|
|
char padding1;
|
|
char padding2;
|
|
char padding3;
|
|
short xrel;
|
|
short yrel;
|
|
}
|
|
|
|
struct JoyHatEvent {
|
|
EventType type;
|
|
uint reserved;
|
|
ulong timestamp;
|
|
JoystickID which;
|
|
char hat;
|
|
char value;
|
|
char padding1;
|
|
char padding2;
|
|
}
|
|
|
|
struct JoyButtonEvent {
|
|
EventType type;
|
|
uint reserved;
|
|
ulong timestamp;
|
|
JoystickID which;
|
|
char button;
|
|
bool down;
|
|
char padding1;
|
|
char padding2;
|
|
}
|
|
|
|
struct JoyDeviceEvent {
|
|
EventType type;
|
|
uint reserved;
|
|
ulong timestamp;
|
|
JoystickID which;
|
|
}
|
|
|
|
struct JoyBatteryEvent {
|
|
EventType type;
|
|
uint reserved;
|
|
ulong timestamp;
|
|
JoystickID which;
|
|
PowerState state;
|
|
int percent;
|
|
}
|
|
|
|
struct GamepadAxisEvent {
|
|
EventType type;
|
|
uint reserved;
|
|
ulong timestamp;
|
|
JoystickID which;
|
|
char axis;
|
|
char padding1;
|
|
char padding2;
|
|
char padding3;
|
|
short value;
|
|
ushort padding4;
|
|
}
|
|
|
|
|
|
struct GamepadButtonEvent {
|
|
EventType type;
|
|
uint reserved;
|
|
ulong timestamp;
|
|
JoystickID which;
|
|
char button;
|
|
bool down;
|
|
char padding1;
|
|
char padding2;
|
|
}
|
|
|
|
|
|
struct GamepadDeviceEvent {
|
|
EventType type;
|
|
uint reserved;
|
|
ulong timestamp;
|
|
JoystickID which;
|
|
}
|
|
|
|
struct GamepadTouchpadEvent {
|
|
EventType type;
|
|
uint reserved;
|
|
ulong timestamp;
|
|
JoystickID which;
|
|
int touchpad;
|
|
int finger;
|
|
float x;
|
|
float y;
|
|
float pressure;
|
|
}
|
|
|
|
struct GamepadSensorEvent {
|
|
EventType type;
|
|
uint reserved;
|
|
ulong timestamp;
|
|
JoystickID which;
|
|
int sensor;
|
|
float[3] data;
|
|
ulong sensor_timestamp;
|
|
}
|
|
|
|
struct AudioDeviceEvent {
|
|
EventType type;
|
|
uint reserved;
|
|
ulong timestamp;
|
|
AudioDeviceID which;
|
|
bool recording;
|
|
char padding1;
|
|
char padding2;
|
|
char padding3;
|
|
}
|
|
|
|
struct CameraDeviceEvent {
|
|
EventType type;
|
|
uint reserved;
|
|
ulong timestamp;
|
|
CameraID which;
|
|
}
|
|
|
|
|
|
struct RenderEvent {
|
|
EventType type;
|
|
uint reserved;
|
|
ulong timestamp;
|
|
WindowID windowID;
|
|
}
|
|
|
|
|
|
struct TouchFingerEvent {
|
|
EventType type;
|
|
uint reserved;
|
|
ulong timestamp;
|
|
TouchID touchID;
|
|
FingerID fingerID;
|
|
float x;
|
|
float y;
|
|
float dx;
|
|
float dy;
|
|
float pressure;
|
|
WindowID windowID;
|
|
}
|
|
|
|
struct PenProximityEvent {
|
|
EventType type;
|
|
uint reserved;
|
|
ulong timestamp;
|
|
WindowID windowID;
|
|
PenID which;
|
|
}
|
|
|
|
struct PenMotionEvent {
|
|
EventType type;
|
|
uint reserved;
|
|
ulong timestamp;
|
|
WindowID windowID;
|
|
PenID which;
|
|
PenInputFlags pen_state;
|
|
float x;
|
|
float y;
|
|
}
|
|
|
|
struct PenTouchEvent {
|
|
EventType type;
|
|
uint reserved;
|
|
ulong timestamp;
|
|
WindowID windowID;
|
|
PenID which;
|
|
PenInputFlags pen_state;
|
|
float x;
|
|
float y;
|
|
bool eraser;
|
|
bool down;
|
|
}
|
|
|
|
struct PenButtonEvent {
|
|
EventType type;
|
|
uint reserved;
|
|
ulong timestamp;
|
|
WindowID windowID;
|
|
PenID which;
|
|
PenInputFlags pen_state;
|
|
float x;
|
|
float y;
|
|
char button;
|
|
bool down;
|
|
}
|
|
|
|
struct PenAxisEvent {
|
|
EventType type;
|
|
uint reserved;
|
|
ulong timestamp;
|
|
WindowID windowID;
|
|
PenID which;
|
|
PenInputFlags pen_state;
|
|
float x;
|
|
float y;
|
|
PenAxis axis;
|
|
float value;
|
|
}
|
|
|
|
struct DropEvent {
|
|
EventType type;
|
|
uint reserved;
|
|
ulong timestamp;
|
|
WindowID windowID;
|
|
float x;
|
|
float y;
|
|
ZString source;
|
|
ZString data;
|
|
}
|
|
|
|
struct ClipboardEvent {
|
|
EventType type;
|
|
uint reserved;
|
|
ulong timestamp;
|
|
bool owner;
|
|
int num_mime_types;
|
|
ZString* mime_types;
|
|
}
|
|
|
|
struct SensorEvent {
|
|
EventType type;
|
|
uint reserved;
|
|
ulong timestamp;
|
|
SensorID which;
|
|
float[6] data;
|
|
ulong sensor_timestamp;
|
|
}
|
|
|
|
struct QuitEvent {
|
|
EventType type;
|
|
uint reserved;
|
|
ulong timestamp;
|
|
}
|
|
|
|
struct UserEvent {
|
|
uint type;
|
|
uint reserved;
|
|
ulong timestamp;
|
|
WindowID windowID;
|
|
int code;
|
|
void* data1;
|
|
void* data2;
|
|
}
|
|
|
|
union Event {
|
|
uint type;
|
|
CommonEvent common;
|
|
DisplayEvent display;
|
|
WindowEvent window;
|
|
KeyboardDeviceEvent kdevice;
|
|
KeyboardEvent key;
|
|
TextEditingEvent edit;
|
|
TextEditingCandidatesEvent edit_candidates;
|
|
TextInputEvent text;
|
|
MouseDeviceEvent mdevice;
|
|
MouseMotionEvent motion;
|
|
MouseButtonEvent button;
|
|
MouseWheelEvent wheel;
|
|
JoyDeviceEvent jdevice;
|
|
JoyAxisEvent jaxis;
|
|
JoyBallEvent jball;
|
|
JoyHatEvent jhat;
|
|
JoyButtonEvent jbutton;
|
|
JoyBatteryEvent jbattery;
|
|
GamepadDeviceEvent gdevice;
|
|
GamepadAxisEvent gaxis;
|
|
GamepadButtonEvent gbutton;
|
|
GamepadTouchpadEvent gtouchpad;
|
|
GamepadSensorEvent gsensor;
|
|
AudioDeviceEvent adevice;
|
|
CameraDeviceEvent cdevice;
|
|
SensorEvent sensor;
|
|
QuitEvent quit;
|
|
UserEvent user;
|
|
TouchFingerEvent tfinger;
|
|
PenProximityEvent pproximity;
|
|
PenTouchEvent ptouch;
|
|
PenMotionEvent pmotion;
|
|
PenButtonEvent pbutton;
|
|
PenAxisEvent paxis;
|
|
RenderEvent render;
|
|
DropEvent drop;
|
|
ClipboardEvent clipboard;
|
|
char[128] padding;
|
|
}
|
|
|
|
extern fn void pump_events() @extern("SDL_PumpEvents");
|
|
|
|
|
|
enum EventAction : inline CInt {
|
|
ADDEVENT,
|
|
PEEKEVENT,
|
|
GETEVENT
|
|
}
|
|
|
|
extern fn int peep_events(Event* events, int numevents, EventAction action, uint minType, uint maxType) @extern("SDL_PeepEvents");
|
|
extern fn bool has_event(uint type) @extern("SDL_HasEvent");
|
|
extern fn bool has_events(uint minType, uint maxType) @extern("SDL_HasEvents");
|
|
extern fn void flush_event(uint type) @extern("SDL_FlushEvent");
|
|
extern fn void flush_events(uint minType, uint maxType) @extern("SDL_FlushEvents");
|
|
extern fn bool poll_event(Event* event) @extern("SDL_PollEvent");
|
|
extern fn bool wait_event(Event* event) @extern("SDL_WaitEvent");
|
|
extern fn bool wait_event_timeout(Event* event, int timeoutMS) @extern("SDL_WaitEventTimeout");
|
|
extern fn bool push_event(Event* event) @extern("SDL_PushEvent");
|
|
|
|
alias EventFilter = fn bool(void* userdata, Event* event);
|
|
|
|
extern fn void set_event_filter(EventFilter filter, void* userdata) @extern("SDL_SetEventFilter");
|
|
extern fn bool get_event_filter(EventFilter *filter, void** userdata) @extern("SDL_GetEventFilter");
|
|
extern fn bool add_event_watch(EventFilter filter, void* userdata) @extern("SDL_AddEventWatch");
|
|
extern fn void remove_event_watch(EventFilter filter, void* userdata) @extern("SDL_RemoveEventWatch");
|
|
extern fn void filter_events(EventFilter filter, void* userdata) @extern("SDL_FilterEvents");
|
|
extern fn void set_event_enabled(uint type, bool enabled) @extern("SDL_SetEventEnabled");
|
|
extern fn bool event_enabled(uint type) @extern("SDL_EventEnabled");
|
|
extern fn uint register_events(int numevents) @extern("SDL_RegisterEvents");
|
|
extern fn Window* get_window_from_event(Event* event) @extern("SDL_GetWindowFromEvent");
|
|
|