added generic support for handling user events
authorHolger Schemel <info@artsoft.org>
Thu, 21 Mar 2019 08:17:57 +0000 (09:17 +0100)
committerHolger Schemel <info@artsoft.org>
Thu, 21 Mar 2019 08:20:09 +0000 (09:20 +0100)
src/events.c
src/events.h
src/libgame/sdl.h
src/libgame/system.c
src/libgame/system.h

index 05c4f2a019ff7ce1cbf7b3a9981a2184fe7303ab..9966905b6286a496ee0a97868b2990105d6dc98a 100644 (file)
@@ -218,6 +218,10 @@ static void HandleEvents(void)
        HandleKeyEvent((KeyEvent *) &event);
        break;
 
+      case EVENT_USER:
+       HandleUserEvent((UserEvent *) &event);
+       break;
+
       default:
        HandleOtherEvents(&event);
        break;
@@ -1599,6 +1603,15 @@ void HandleDropEvent(Event *event)
     SDL_free(event->drop.file);
 }
 
+void HandleUserEvent(UserEvent *event)
+{
+  switch (event->code)
+  {
+    default:
+      break;
+  }
+}
+
 void HandleButton(int mx, int my, int button, int button_nr)
 {
   static int old_mx = 0, old_my = 0;
index 1294689fe413128d32eb20d69840261f993aaed8..ef61b60590ee784ae7213a896aea98b7f51d3d4a 100644 (file)
@@ -32,6 +32,7 @@ void HandlePauseResumeEvent(PauseResumeEvent *);
 boolean HandleKeysDebug(Key, int);
 void HandleKeyEvent(KeyEvent *);
 void HandleDropEvent(Event *);
+void HandleUserEvent(UserEvent *);
 
 void HandleToonAnimations(void);
 
index 627617d245594db15017f4ae75d14e92dac3fdf8..e4b2b68418c8cafbf4156e9d2be5d85380718016 100644 (file)
@@ -88,6 +88,21 @@ struct MouseCursorInfo
   byte mask[CURSOR_MAX_WIDTH * CURSOR_MAX_HEIGHT / 8];
 };
 
+struct UserEventInfo
+{
+  // same as in "struct SDL_UserEvent"
+  Uint32 type;
+  Uint32 timestamp;
+  Uint32 windowID;
+  Sint32 code;
+
+  // changed to use integer values instead of void pointers
+  Uint32 value1;
+  Uint32 value2;
+};
+
+typedef struct UserEventInfo   UserEvent;
+
 
 // SDL symbol definitions
 
@@ -106,6 +121,7 @@ struct MouseCursorInfo
 #define EVENT_TEXTINPUT                SDL_TEXTINPUT
 #define EVENT_KEYPRESS         SDL_KEYDOWN
 #define EVENT_KEYRELEASE       SDL_KEYUP
+#define EVENT_USER             SDL_USEREVENT
 #define EVENT_QUIT             SDL_QUIT
 
 #define KSYM_UNDEFINED         SDLK_UNKNOWN
index fc1e0c69110c72a49170dafc92b5db92fa1e9e38..15e86a4afbc7084012132acac0f133577914085f 100644 (file)
@@ -1733,6 +1733,20 @@ void StopTextInput(void)
 #endif
 }
 
+void PushUserEvent(int code, int value1, int value2)
+{
+  UserEvent event;
+
+  SDL_memset(&event, 0, sizeof(event));
+
+  event.type = EVENT_USER;
+  event.code = code;
+  event.value1 = value1;
+  event.value2 = value2;
+
+  SDL_PushEvent((SDL_Event *)&event);
+}
+
 
 // ============================================================================
 // joystick functions
index 68e5a33e31d6b1923cd4f85b9febacd106ed363b..cf49d86f8a935ef24ab42728517e29206bbc57b3 100644 (file)
@@ -1854,6 +1854,7 @@ KeyMod GetKeyModState(void);
 KeyMod GetKeyModStateFromEvents(void);
 void StartTextInput(int, int, int, int);
 void StopTextInput(void);
+void PushUserEvent(int, int, int);
 
 void InitJoysticks(void);
 boolean ReadJoystick(int, int *, int *, boolean *, boolean *);