1 2 // Copyright Michael D. Parker 2018. 3 // Distributed under the Boost Software License, Version 1.0. 4 // (See accompanying file LICENSE_1_0.txt or copy at 5 // http://www.boost.org/LICENSE_1_0.txt) 6 7 module bindbc.sdl.bind.sdlevents; 8 9 import bindbc.sdl.config; 10 11 import bindbc.sdl.bind.sdlgesture, 12 bindbc.sdl.bind.sdljoystick, 13 bindbc.sdl.bind.sdlkeyboard, 14 bindbc.sdl.bind.sdlkeycode, 15 bindbc.sdl.bind.sdlstdinc, 16 bindbc.sdl.bind.sdlsyswm, 17 bindbc.sdl.bind.sdltouch, 18 bindbc.sdl.bind.sdlvideo; 19 20 enum { 21 SDL_RELEASED = 0, 22 SDL_PRESSED = 1, 23 } 24 25 static if(sdlSupport >= SDLSupport.sdl209) { 26 enum SDL_EventType { 27 SDL_FIRSTEVENT = 0, 28 SDL_QUIT = 0x100, 29 SDL_APP_TERMINATING, 30 SDL_APP_LOWMEMORY, 31 SDL_APP_WILLENTERBACKGROUND, 32 SDL_APP_DIDENTERBACKGROUND, 33 SDL_APP_WILLENTERFOREGROUND, 34 SDL_APP_DIDENTERFOREGROUND, 35 SDL_DISPLAYEVENT = 0x150, 36 SDL_WINDOWEVENT = 0x200, 37 SDL_SYSWMEVENT, 38 SDL_KEYDOWN = 0x300, 39 SDL_KEYUP, 40 SDL_TEXTEDITING, 41 SDL_TEXTINPUT, 42 SDL_KEYMAPCHANGED, 43 SDL_MOUSEMOTION = 0x400, 44 SDL_MOUSEBUTTONDOWN, 45 SDL_MOUSEBUTTONUP, 46 SDL_MOUSEWHEEL, 47 SDL_JOYAXISMOTION = 0x600, 48 SDL_JOYBALLMOTION, 49 SDL_JOYHATMOTION, 50 SDL_JOYBUTTONDOWN, 51 SDL_JOYBUTTONUP, 52 SDL_JOYDEVICEADDED, 53 SDL_JOYDEVICEREMOVED, 54 SDL_CONTROLLERAXISMOTION = 0x650, 55 SDL_CONTROLLERBUTTONDOWN, 56 SDL_CONTROLLERBUTTONUP, 57 SDL_CONTROLLERDEVICEADDED, 58 SDL_CONTROLLERDEVICEREMOVED, 59 SDL_CONTROLLERDEVICEREMAPPED, 60 SDL_FINGERDOWN = 0x700, 61 SDL_FINGERUP, 62 SDL_FINGERMOTION, 63 SDL_DOLLARGESTURE = 0x800, 64 SDL_DOLLARRECORD, 65 SDL_MULTIGESTURE, 66 SDL_CLIPBOARDUPDATE = 0x900, 67 SDL_DROPFILE = 0x1000, 68 SDL_DROPTEXT, 69 SDL_DROPBEGIN, 70 SDL_DROPCOMPLETE, 71 SDL_AUDIODEVICEADDED = 0x1100, 72 SDL_AUDIODEVICEREMOVED, 73 SDL_SENSORUPDATE = 0x1200, 74 SDL_RENDER_TARGETS_RESET = 0x2000, 75 SDL_RENDER_DEVICE_RESET, 76 SDL_USEREVENT = 0x8000, 77 SDL_LASTEVENT = 0xFFFF 78 } 79 } 80 else static if(sdlSupport >= SDLSupport.sdl205) { 81 enum SDL_EventType { 82 SDL_FIRSTEVENT = 0, 83 SDL_QUIT = 0x100, 84 SDL_APP_TERMINATING, 85 SDL_APP_LOWMEMORY, 86 SDL_APP_WILLENTERBACKGROUND, 87 SDL_APP_DIDENTERBACKGROUND, 88 SDL_APP_WILLENTERFOREGROUND, 89 SDL_APP_DIDENTERFOREGROUND, 90 SDL_WINDOWEVENT = 0x200, 91 SDL_SYSWMEVENT, 92 SDL_KEYDOWN = 0x300, 93 SDL_KEYUP, 94 SDL_TEXTEDITING, 95 SDL_TEXTINPUT, 96 SDL_KEYMAPCHANGED, 97 SDL_MOUSEMOTION = 0x400, 98 SDL_MOUSEBUTTONDOWN, 99 SDL_MOUSEBUTTONUP, 100 SDL_MOUSEWHEEL, 101 SDL_JOYAXISMOTION = 0x600, 102 SDL_JOYBALLMOTION, 103 SDL_JOYHATMOTION, 104 SDL_JOYBUTTONDOWN, 105 SDL_JOYBUTTONUP, 106 SDL_JOYDEVICEADDED, 107 SDL_JOYDEVICEREMOVED, 108 SDL_CONTROLLERAXISMOTION = 0x650, 109 SDL_CONTROLLERBUTTONDOWN, 110 SDL_CONTROLLERBUTTONUP, 111 SDL_CONTROLLERDEVICEADDED, 112 SDL_CONTROLLERDEVICEREMOVED, 113 SDL_CONTROLLERDEVICEREMAPPED, 114 SDL_FINGERDOWN = 0x700, 115 SDL_FINGERUP, 116 SDL_FINGERMOTION, 117 SDL_DOLLARGESTURE = 0x800, 118 SDL_DOLLARRECORD, 119 SDL_MULTIGESTURE, 120 SDL_CLIPBOARDUPDATE = 0x900, 121 SDL_DROPFILE = 0x1000, 122 SDL_DROPTEXT, 123 SDL_DROPBEGIN, 124 SDL_DROPCOMPLETE, 125 SDL_AUDIODEVICEADDED = 0x1100, 126 SDL_AUDIODEVICEREMOVED, 127 SDL_RENDER_TARGETS_RESET = 0x2000, 128 SDL_RENDER_DEVICE_RESET, 129 SDL_USEREVENT = 0x8000, 130 SDL_LASTEVENT = 0xFFFF 131 } 132 } 133 else static if(sdlSupport >= SDLSupport.sdl204) { 134 enum SDL_EventType { 135 SDL_FIRSTEVENT = 0, 136 SDL_QUIT = 0x100, 137 SDL_APP_TERMINATING, 138 SDL_APP_LOWMEMORY, 139 SDL_APP_WILLENTERBACKGROUND, 140 SDL_APP_DIDENTERBACKGROUND, 141 SDL_APP_WILLENTERFOREGROUND, 142 SDL_APP_DIDENTERFOREGROUND, 143 SDL_WINDOWEVENT = 0x200, 144 SDL_SYSWMEVENT, 145 SDL_KEYDOWN = 0x300, 146 SDL_KEYUP, 147 SDL_TEXTEDITING, 148 SDL_TEXTINPUT, 149 SDL_KEYMAPCHANGED, 150 SDL_MOUSEMOTION = 0x400, 151 SDL_MOUSEBUTTONDOWN, 152 SDL_MOUSEBUTTONUP, 153 SDL_MOUSEWHEEL, 154 SDL_JOYAXISMOTION = 0x600, 155 SDL_JOYBALLMOTION, 156 SDL_JOYHATMOTION, 157 SDL_JOYBUTTONDOWN, 158 SDL_JOYBUTTONUP, 159 SDL_JOYDEVICEADDED, 160 SDL_JOYDEVICEREMOVED, 161 SDL_CONTROLLERAXISMOTION = 0x650, 162 SDL_CONTROLLERBUTTONDOWN, 163 SDL_CONTROLLERBUTTONUP, 164 SDL_CONTROLLERDEVICEADDED, 165 SDL_CONTROLLERDEVICEREMOVED, 166 SDL_CONTROLLERDEVICEREMAPPED, 167 SDL_FINGERDOWN = 0x700, 168 SDL_FINGERUP, 169 SDL_FINGERMOTION, 170 SDL_DOLLARGESTURE = 0x800, 171 SDL_DOLLARRECORD, 172 SDL_MULTIGESTURE, 173 SDL_CLIPBOARDUPDATE = 0x900, 174 SDL_DROPFILE = 0x1000, 175 SDL_AUDIODEVICEADDED = 0x1100, 176 SDL_AUDIODEVICEREMOVED, 177 SDL_RENDER_TARGETS_RESET = 0x2000, 178 SDL_RENDER_DEVICE_RESET, 179 SDL_USEREVENT = 0x8000, 180 SDL_LASTEVENT = 0xFFFF 181 } 182 } 183 else static if(sdlSupport >= SDLSupport.sdl201) { 184 enum SDL_EventType { 185 SDL_FIRSTEVENT = 0, 186 SDL_QUIT = 0x100, 187 SDL_APP_TERMINATING, 188 SDL_APP_LOWMEMORY, 189 SDL_APP_WILLENTERBACKGROUND, 190 SDL_APP_DIDENTERBACKGROUND, 191 SDL_APP_WILLENTERFOREGROUND, 192 SDL_APP_DIDENTERFOREGROUND, 193 SDL_WINDOWEVENT = 0x200, 194 SDL_SYSWMEVENT, 195 SDL_KEYDOWN = 0x300, 196 SDL_KEYUP, 197 SDL_TEXTEDITING, 198 SDL_TEXTINPUT, 199 SDL_MOUSEMOTION = 0x400, 200 SDL_MOUSEBUTTONDOWN, 201 SDL_MOUSEBUTTONUP, 202 SDL_MOUSEWHEEL, 203 SDL_JOYAXISMOTION = 0x600, 204 SDL_JOYBALLMOTION, 205 SDL_JOYHATMOTION, 206 SDL_JOYBUTTONDOWN, 207 SDL_JOYBUTTONUP, 208 SDL_JOYDEVICEADDED, 209 SDL_JOYDEVICEREMOVED, 210 SDL_CONTROLLERAXISMOTION = 0x650, 211 SDL_CONTROLLERBUTTONDOWN, 212 SDL_CONTROLLERBUTTONUP, 213 SDL_CONTROLLERDEVICEADDED, 214 SDL_CONTROLLERDEVICEREMOVED, 215 SDL_CONTROLLERDEVICEREMAPPED, 216 SDL_FINGERDOWN = 0x700, 217 SDL_FINGERUP, 218 SDL_FINGERMOTION, 219 SDL_DOLLARGESTURE = 0x800, 220 SDL_DOLLARRECORD, 221 SDL_MULTIGESTURE, 222 SDL_CLIPBOARDUPDATE = 0x900, 223 SDL_DROPFILE = 0x1000, 224 SDL_RENDER_TARGETS_RESET = 0x2000, 225 SDL_USEREVENT = 0x8000, 226 SDL_LASTEVENT = 0xFFFF 227 } 228 } 229 else { 230 enum SDL_EventType { 231 SDL_FIRSTEVENT = 0, 232 SDL_QUIT = 0x100, 233 SDL_APP_TERMINATING, 234 SDL_APP_LOWMEMORY, 235 SDL_APP_WILLENTERBACKGROUND, 236 SDL_APP_DIDENTERBACKGROUND, 237 SDL_APP_WILLENTERFOREGROUND, 238 SDL_APP_DIDENTERFOREGROUND, 239 SDL_WINDOWEVENT = 0x200, 240 SDL_SYSWMEVENT, 241 SDL_KEYDOWN = 0x300, 242 SDL_KEYUP, 243 SDL_TEXTEDITING, 244 SDL_TEXTINPUT, 245 SDL_MOUSEMOTION = 0x400, 246 SDL_MOUSEBUTTONDOWN, 247 SDL_MOUSEBUTTONUP, 248 SDL_MOUSEWHEEL, 249 SDL_JOYAXISMOTION = 0x600, 250 SDL_JOYBALLMOTION, 251 SDL_JOYHATMOTION, 252 SDL_JOYBUTTONDOWN, 253 SDL_JOYBUTTONUP, 254 SDL_JOYDEVICEADDED, 255 SDL_JOYDEVICEREMOVED, 256 SDL_CONTROLLERAXISMOTION = 0x650, 257 SDL_CONTROLLERBUTTONDOWN, 258 SDL_CONTROLLERBUTTONUP, 259 SDL_CONTROLLERDEVICEADDED, 260 SDL_CONTROLLERDEVICEREMOVED, 261 SDL_CONTROLLERDEVICEREMAPPED, 262 SDL_FINGERDOWN = 0x700, 263 SDL_FINGERUP, 264 SDL_FINGERMOTION, 265 SDL_DOLLARGESTURE = 0x800, 266 SDL_DOLLARRECORD, 267 SDL_MULTIGESTURE, 268 SDL_CLIPBOARDUPDATE = 0x900, 269 SDL_DROPFILE = 0x1000, 270 SDL_USEREVENT = 0x8000, 271 SDL_LASTEVENT = 0xFFFF 272 } 273 } 274 mixin(expandEnum!SDL_EventType); 275 276 struct SDL_CommonEvent { 277 SDL_EventType type; 278 uint timestamp; 279 } 280 281 static if(sdlSupport >= SDLSupport.sdl209) { 282 struct SDL_DisplayEvent { 283 SDL_EventType type; 284 uint timestamp; 285 uint display; 286 ubyte event; 287 ubyte padding1; 288 ubyte padding2; 289 ubyte padding3; 290 int data1; 291 } 292 } 293 294 struct SDL_WindowEvent { 295 SDL_EventType type; 296 uint timestamp; 297 uint windowID; 298 SDL_WindowEventID event; 299 ubyte padding1; 300 ubyte padding2; 301 ubyte padding3; 302 int data1; 303 int data2; 304 } 305 306 struct SDL_KeyboardEvent { 307 SDL_EventType type; 308 uint timestamp; 309 uint windowID; 310 ubyte state; 311 ubyte repeat; 312 ubyte padding2; 313 ubyte padding3; 314 SDL_Keysym keysym; 315 } 316 317 enum SDL_TEXTEDITINGEVENT_TEXT_SIZE = 32; 318 struct SDL_TextEditingEvent { 319 SDL_EventType type; 320 uint timestamp; 321 uint windowID; 322 char[SDL_TEXTEDITINGEVENT_TEXT_SIZE] text; 323 int start; 324 int length; 325 } 326 327 enum SDL_TEXTINPUTEVENT_TEXT_SIZE = 32; 328 struct SDL_TextInputEvent { 329 SDL_EventType type; 330 uint timestamp; 331 uint windowID; 332 char[SDL_TEXTINPUTEVENT_TEXT_SIZE] text; 333 } 334 335 struct SDL_MouseMotionEvent { 336 SDL_EventType type; 337 uint timestamp; 338 uint windowID; 339 uint which; 340 uint state; 341 int x; 342 int y; 343 int xrel; 344 int yrel; 345 } 346 347 struct SDL_MouseButtonEvent { 348 SDL_EventType type; 349 uint timestamp; 350 uint windowID; 351 uint which; 352 ubyte button; 353 ubyte state; 354 static if(sdlSupport == SDLSupport.sdl200) { 355 ubyte padding1; 356 ubyte padding2; 357 } 358 else { 359 ubyte clicks; 360 ubyte padding1; 361 } 362 int x; 363 int y; 364 } 365 366 struct SDL_MouseWheelEvent { 367 SDL_EventType type; 368 uint timestamp; 369 uint windowID; 370 uint which; 371 int x; 372 int y; 373 static if(sdlSupport >= SDLSupport.sdl204) { 374 uint direction; 375 } 376 } 377 378 struct SDL_JoyAxisEvent { 379 SDL_EventType type; 380 uint timestamp; 381 SDL_JoystickID which; 382 ubyte axis; 383 ubyte padding1; 384 ubyte padding2; 385 ubyte padding3; 386 short value; 387 ushort padding4; 388 } 389 390 struct SDL_JoyBallEvent { 391 SDL_EventType type; 392 uint timestamp; 393 SDL_JoystickID which; 394 ubyte ball; 395 ubyte padding1; 396 ubyte padding2; 397 ubyte padding3; 398 short xrel; 399 short yrel; 400 } 401 402 struct SDL_JoyHatEvent { 403 SDL_EventType type; 404 uint timestamp; 405 SDL_JoystickID which; 406 ubyte hat; 407 ubyte value; 408 ubyte padding1; 409 ubyte padding2; 410 } 411 412 struct SDL_JoyButtonEvent { 413 SDL_EventType type; 414 uint timestamp; 415 SDL_JoystickID which; 416 ubyte button; 417 ubyte state; 418 ubyte padding1; 419 ubyte padding2; 420 } 421 422 struct SDL_JoyDeviceEvent { 423 SDL_EventType type; 424 uint timestamp; 425 int which; 426 } 427 428 struct SDL_ControllerAxisEvent { 429 SDL_EventType type; 430 uint timestamp; 431 SDL_JoystickID which; 432 ubyte axis; 433 ubyte padding1; 434 ubyte padding2; 435 ubyte padding3; 436 short value; 437 ushort padding4; 438 } 439 440 struct SDL_ControllerButtonEvent { 441 SDL_EventType type; 442 uint timestamp; 443 SDL_JoystickID which; 444 ubyte button; 445 ubyte state; 446 ubyte padding1; 447 ubyte padding2; 448 } 449 450 struct SDL_ControllerDeviceEvent { 451 SDL_EventType type; 452 uint timestamp; 453 int which; 454 } 455 456 static if(sdlSupport >= SDLSupport.sdl204) { 457 struct SDL_AudioDeviceEvent { 458 uint type; 459 uint timestamp; 460 uint which; 461 ubyte iscapture; 462 ubyte padding1; 463 ubyte padding2; 464 ubyte padding3; 465 } 466 } 467 468 struct SDL_TouchFingerEvent { 469 SDL_EventType type; 470 uint timestamp; 471 SDL_TouchID touchId; 472 SDL_FingerID fingerId; 473 float x; 474 float y; 475 float dx; 476 float dy; 477 float pressure; 478 479 static if(sdlSupport >= SDLSupport.sdl2012) { 480 uint windowID; 481 } 482 } 483 484 struct SDL_MultiGestureEvent { 485 SDL_EventType type; 486 uint timestamp; 487 SDL_TouchID touchId; 488 float dTheta; 489 float dDist; 490 float x; 491 float y; 492 ushort numFingers; 493 ushort padding; 494 } 495 496 struct SDL_DollarGestureEvent { 497 SDL_EventType type; 498 uint timestamp; 499 SDL_TouchID touchId; 500 SDL_GestureID gestureId; 501 uint numFingers; 502 float error; 503 float x; 504 float y; 505 } 506 507 struct SDL_DropEvent { 508 SDL_EventType type; 509 uint timestamp; 510 char* file; 511 static if(sdlSupport >= SDLSupport.sdl205) { 512 uint windowID; 513 } 514 } 515 516 struct SDL_SensorEvent { 517 SDL_EventType type; 518 uint timestamp; 519 int which; 520 float[6] data; 521 } 522 523 struct SDL_QuitEvent { 524 SDL_EventType type; 525 uint timestamp; 526 } 527 528 struct SDL_OSEvent { 529 SDL_EventType type; 530 uint timestamp; 531 } 532 533 struct SDL_UserEvent { 534 SDL_EventType type; 535 uint timestamp; 536 uint windowID; 537 int code; 538 void* data1; 539 void* data2; 540 } 541 542 struct SDL_SysWMEvent { 543 SDL_EventType type; 544 uint timestamp; 545 SDL_SysWMmsg* msg; 546 } 547 548 union SDL_Event { 549 SDL_EventType type; 550 SDL_CommonEvent common; 551 static if(sdlSupport >= SDLSupport.sdl209) { 552 SDL_DisplayEvent display; 553 } 554 SDL_WindowEvent window; 555 SDL_KeyboardEvent key; 556 SDL_TextEditingEvent edit; 557 SDL_TextInputEvent text; 558 SDL_MouseMotionEvent motion; 559 SDL_MouseButtonEvent button; 560 SDL_MouseWheelEvent wheel; 561 SDL_JoyAxisEvent jaxis; 562 SDL_JoyBallEvent jball; 563 SDL_JoyHatEvent jhat; 564 SDL_JoyButtonEvent jbutton; 565 SDL_JoyDeviceEvent jdevice; 566 SDL_ControllerAxisEvent caxis; 567 SDL_ControllerButtonEvent cbutton; 568 SDL_ControllerDeviceEvent cdevice; 569 static if(sdlSupport >= SDLSupport.sdl204) { 570 SDL_AudioDeviceEvent adevice; 571 } 572 static if(sdlSupport >= SDLSupport.sdl209) { 573 SDL_SensorEvent sensor; 574 } 575 SDL_QuitEvent quit; 576 SDL_UserEvent user; 577 SDL_SysWMEvent syswm; 578 SDL_TouchFingerEvent tfinger; 579 SDL_MultiGestureEvent mgesture; 580 SDL_DollarGestureEvent dgesture; 581 SDL_DropEvent drop; 582 583 ubyte[56] padding; 584 } 585 586 enum SDL_eventaction { 587 SDL_ADDEVENT, 588 SDL_PEEKEVENT, 589 SDL_GETEVENT 590 } 591 alias SDL_EventAction = SDL_eventaction; 592 mixin(expandEnum!SDL_EventAction); 593 594 extern(C) nothrow alias SDL_EventFilter = int function(void* userdata, SDL_Event* event); 595 596 enum { 597 SDL_QUERY = -1, 598 SDL_IGNORE = 0, 599 SDL_DISABLE = 0, 600 SDL_ENABLE = 1, 601 } 602 603 @nogc nothrow { 604 int SDL_GetEventState(SDL_EventType type) { 605 pragma(inline, true); 606 return SDL_EventState(type, SDL_QUERY); 607 } 608 609 // This is implemented in SDL_quit.h, but works better here. 610 bool SDL_QuitRequested() { 611 pragma(inline, true); 612 SDL_PumpEvents(); 613 return SDL_PeepEvents(null,0,SDL_PEEKEVENT,SDL_QUIT,SDL_QUIT) > 0; 614 } 615 } 616 617 static if(staticBinding) { 618 extern(C) @nogc nothrow { 619 void SDL_PumpEvents(); 620 int SDL_PeepEvents(SDL_Event*,int,SDL_eventaction,uint,uint); 621 SDL_bool SDL_HasEvent(uint); 622 SDL_bool SDL_HasEvents(uint,uint); 623 void SDL_FlushEvent(uint); 624 void SDL_FlushEvents(uint,uint); 625 int SDL_PollEvent(SDL_Event*); 626 int SDL_WaitEvent(SDL_Event*); 627 int SDL_WaitEventTimeout(SDL_Event*,int); 628 int SDL_PushEvent(SDL_Event*); 629 void SDL_SetEventFilter(SDL_EventFilter,void*); 630 SDL_bool SDL_GetEventFilter(SDL_EventFilter*,void**); 631 void SDL_AddEventWatch(SDL_EventFilter,void*); 632 void SDL_DelEventWatch(SDL_EventFilter,void*); 633 void SDL_FilterEvents(SDL_EventFilter,void*); 634 ubyte SDL_EventState(uint,int); 635 uint SDL_RegisterEvents(int); 636 } 637 } 638 else { 639 extern(C) @nogc nothrow { 640 alias pSDL_PumpEvents = void function(); 641 alias pSDL_PeepEvents = int function(SDL_Event*,int,SDL_eventaction,uint,uint); 642 alias pSDL_HasEvent = SDL_bool function(uint); 643 alias pSDL_HasEvents = SDL_bool function(uint,uint); 644 alias pSDL_FlushEvent = void function(uint); 645 alias pSDL_FlushEvents = void function(uint,uint); 646 alias pSDL_PollEvent = int function(SDL_Event*); 647 alias pSDL_WaitEvent = int function(SDL_Event*); 648 alias pSDL_WaitEventTimeout = int function(SDL_Event*,int); 649 alias pSDL_PushEvent = int function(SDL_Event*); 650 alias pSDL_SetEventFilter = void function(SDL_EventFilter,void*); 651 alias pSDL_GetEventFilter = SDL_bool function(SDL_EventFilter*,void**); 652 alias pSDL_AddEventWatch = void function(SDL_EventFilter,void*); 653 alias pSDL_DelEventWatch = void function(SDL_EventFilter,void*); 654 alias pSDL_FilterEvents = void function(SDL_EventFilter,void*); 655 alias pSDL_EventState = ubyte function(uint,int); 656 alias pSDL_RegisterEvents = uint function(int); 657 } 658 659 __gshared { 660 pSDL_PumpEvents SDL_PumpEvents; 661 pSDL_PeepEvents SDL_PeepEvents; 662 pSDL_HasEvent SDL_HasEvent; 663 pSDL_HasEvents SDL_HasEvents; 664 pSDL_FlushEvent SDL_FlushEvent; 665 pSDL_FlushEvents SDL_FlushEvents; 666 pSDL_PollEvent SDL_PollEvent; 667 pSDL_WaitEvent SDL_WaitEvent; 668 pSDL_WaitEventTimeout SDL_WaitEventTimeout; 669 pSDL_PushEvent SDL_PushEvent; 670 pSDL_SetEventFilter SDL_SetEventFilter; 671 pSDL_GetEventFilter SDL_GetEventFilter; 672 pSDL_AddEventWatch SDL_AddEventWatch; 673 pSDL_DelEventWatch SDL_DelEventWatch; 674 pSDL_FilterEvents SDL_FilterEvents; 675 pSDL_EventState SDL_EventState; 676 pSDL_RegisterEvents SDL_RegisterEvents; 677 } 678 }