This is an automated email from the git hooks/post-receive script.

git pushed a commit to reference refs/pull/124/head
in repository efl.

View the commit online.

commit e294a3809acb6517283a56b854fef6d0031f77d5
Author: Swagtoy <[email protected]>
AuthorDate: Sat May 16 17:05:54 2026 -0400

    ecore_sdl: Move events to functions
    
    A bit consistent with the other ecore event systems, and just cleaner.
---
 src/lib/ecore_sdl/ecore_sdl.c | 431 +++++++++++++++++++++++-------------------
 1 file changed, 235 insertions(+), 196 deletions(-)

diff --git a/src/lib/ecore_sdl/ecore_sdl.c b/src/lib/ecore_sdl/ecore_sdl.c
index 55e0589fd7..b55501c6c6 100644
--- a/src/lib/ecore_sdl/ecore_sdl.c
+++ b/src/lib/ecore_sdl/ecore_sdl.c
@@ -161,6 +161,224 @@ _ecore_sdl_event_key(SDL_Event *event, double timestamp)
    return NULL;
 }
 
+static void
+ecore_sdl_event_window_close_requested(SDL_Event *event, unsigned int timestamp)
+{
+   Ecore_Sdl_Event_Window *ev;
+
+   ev = calloc(1, sizeof (Ecore_Sdl_Event_Window));
+   ev->windowID = event->window.windowID;
+
+   ecore_event_add(ECORE_SDL_EVENT_WINDOW_CLOSE, ev, NULL, NULL);
+}
+
+static void
+ecore_sdl_event_mouse_button_down(SDL_Event *event, unsigned int timestamp)
+{
+   Ecore_Event_Mouse_Button *ev;
+
+   ev = calloc(1, sizeof(Ecore_Event_Mouse_Button));
+   if (!ev) return;
+
+   ev->timestamp = timestamp;
+   ev->window = event->button.windowID;
+   ev->event_window = event->button.windowID;
+   ev->modifiers = 0; /* FIXME: keep modifier around. */
+   ev->buttons = event->button.button;
+   ev->double_click = 0;
+   ev->triple_click = 0;
+
+   /* Must set multi touch device to 0 or it will get ignored */
+   ev->multi.device = 0;
+   ev->multi.radius = ev->multi.radius_x = ev->multi.radius_y = 0;
+   ev->multi.pressure = ev->multi.angle = 0;
+   ev->multi.x = ev->multi.y = ev->multi.root.x = ev->multi.root.y = 0;
+
+   ecore_event_add(ECORE_EVENT_MOUSE_BUTTON_DOWN, ev, NULL, NULL);
+}
+
+static void
+ecore_sdl_event_mouse_button_up(SDL_Event *event, unsigned int timestamp)
+{
+   Ecore_Event_Mouse_Button *ev;
+
+   ev = calloc(1, sizeof(Ecore_Event_Mouse_Button));
+   if (!ev) return;
+   ev->timestamp = timestamp;
+   ev->window = event->button.windowID;
+   ev->event_window = event->button.windowID;
+   ev->modifiers = 0; /* FIXME: keep modifier around. */
+   ev->buttons = event->button.button;
+   ev->double_click = 0;
+   ev->triple_click = 0;
+
+   /* Must set multi touch device to 0 or it will get ignored */
+   ev->multi.device = 0;
+   ev->multi.radius = ev->multi.radius_x = ev->multi.radius_y = 0;
+   ev->multi.pressure = ev->multi.angle = 0;
+   ev->multi.x = ev->multi.y = ev->multi.root.x = ev->multi.root.y = 0;
+
+   ecore_event_add(ECORE_EVENT_MOUSE_BUTTON_UP, ev, NULL, NULL);
+}
+
+static void
+ecore_sdl_event_mouse_wheel(SDL_Event *event, unsigned int timestamp)
+{
+   Ecore_Event_Mouse_Wheel *ev;
+
+   ev = calloc(1, sizeof(Ecore_Event_Mouse_Wheel));
+   if (!ev) return;
+
+   ev->timestamp = timestamp;
+   ev->window = event->wheel.windowID;
+   ev->event_window = event->wheel.windowID;
+   ev->modifiers = 0; /* FIXME: keep modifier around. */
+   ev->direction = 0;
+   ev->z = (event->wheel.integer_x != 0) ? (event->wheel.integer_x) : (-event->wheel.integer_y);
+   ev->direction = (event->wheel.integer_x == 0) ? (0) : (1);
+
+   ecore_event_add(ECORE_EVENT_MOUSE_WHEEL, ev, NULL, NULL);
+}
+
+
+
+static void
+ecore_sdl_event_mouse_motion(SDL_Event *event, unsigned int timestamp)
+{
+   Ecore_Event_Mouse_Move *ev;
+
+   ev = calloc(1, sizeof(Ecore_Event_Mouse_Move));
+   if (!ev) return;
+
+   ev->timestamp = timestamp;
+   ev->window = event->motion.windowID;
+   ev->event_window = event->motion.windowID;
+   ev->modifiers = 0; /* FIXME: keep modifier around. */
+   ev->x = event->motion.x;
+   ev->y = event->motion.y;
+   ev->root.x = ev->x;
+   ev->root.y = ev->y;
+
+   /* Must set multi touch device to 0 or it will get ignored */
+   ev->multi.device = 0;
+   ev->multi.radius = ev->multi.radius_x = ev->multi.radius_y = 0;
+   ev->multi.pressure = ev->multi.angle = 0;
+   ev->multi.x = ev->multi.y = ev->multi.root.x = ev->multi.root.y = 0;
+
+   ecore_event_add(ECORE_EVENT_MOUSE_MOVE, ev, NULL, NULL);
+}
+
+static void
+ecore_sdl_event_key_down(SDL_Event *event, unsigned int timestamp)
+{
+   Ecore_SDL_Pressed *entry;
+   Ecore_Event_Key *ev;
+
+   entry = (Ecore_SDL_Pressed*) eina_rbtree_inline_lookup(repeat, &event->key.key, sizeof (event->key.key),
+                                                          EINA_RBTREE_CMP_KEY_CB(_ecore_sdl_pressed_node), NULL);
+   if (entry)
+     {
+        ev = _ecore_sdl_event_key(event, timestamp);
+        if (ev) ecore_event_add(ECORE_EVENT_KEY_UP, ev, NULL, NULL);
+     }
+
+   ev = _ecore_sdl_event_key(event, timestamp);
+   if (ev) ecore_event_add(ECORE_EVENT_KEY_DOWN, ev, NULL, NULL);
+
+   if (!entry)
+     {
+        entry = malloc(sizeof (Ecore_SDL_Pressed));
+        if (!entry) return;
+
+        entry->key = event->key.key;
+
+        repeat = eina_rbtree_inline_insert(repeat, EINA_RBTREE_GET(entry),
+                                           EINA_RBTREE_CMP_NODE_CB(_ecore_sdl_pressed_key), NULL);
+     }
+}
+
+static void
+ecore_sdl_event_key_up(SDL_Event *event, unsigned int timestamp)
+{
+   Ecore_Event_Key *ev;
+   Ecore_SDL_Pressed *entry;
+
+   entry = (Ecore_SDL_Pressed*) eina_rbtree_inline_lookup(repeat, &event->key.key, sizeof (event->key.key),
+                                                          EINA_RBTREE_CMP_KEY_CB(_ecore_sdl_pressed_node), NULL);
+   if (entry)
+     {
+        repeat = eina_rbtree_inline_remove(repeat, EINA_RBTREE_GET(entry),
+                                           EINA_RBTREE_CMP_NODE_CB(_ecore_sdl_pressed_key), NULL);
+        free(entry);
+     }
+
+   ev = _ecore_sdl_event_key(event, timestamp);
+   if (ev) ecore_event_add(ECORE_EVENT_KEY_UP, ev, NULL, NULL);
+}
+
+static void
+ecore_sdl_event_window_resized(SDL_Event *event, unsigned int timestamp)
+{
+   Ecore_Sdl_Event_Video_Resize *ev;
+
+   ev = calloc(1, sizeof (Ecore_Sdl_Event_Video_Resize));
+   ev->windowID = event->window.windowID;
+   ev->w = event->window.data1;
+   ev->h = event->window.data2;
+
+   ecore_event_add(ECORE_SDL_EVENT_RESIZE, ev, NULL, NULL);
+}
+
+static void
+ecore_sdl_event_window_exposed(SDL_Event *event, unsigned int timestamp)
+{
+   Ecore_Sdl_Event_Window *ev;
+
+   ev = calloc(1, sizeof (Ecore_Sdl_Event_Window));
+   ev->windowID = event->window.windowID;
+
+   ecore_event_add(ECORE_SDL_EVENT_EXPOSE, ev, NULL, NULL);
+}
+
+static void
+ecore_sdl_event_window_mouse_enter(SDL_Event *event, unsigned int timestamp)
+{
+   Ecore_Event_Mouse_IO *ev;
+
+   ev = calloc(1, sizeof (Ecore_Event_Mouse_IO));
+   ev->window = event->window.windowID;
+   ev->event_window = event->window.windowID;
+
+   ecore_event_add(event->type == SDL_EVENT_WINDOW_MOUSE_ENTER ?
+                   ECORE_EVENT_MOUSE_IN : ECORE_EVENT_MOUSE_OUT,
+                   ev, NULL, NULL);
+}
+
+static void
+ecore_sdl_event_window_mouse_leave(SDL_Event *event, unsigned int timestamp)
+{
+   ecore_sdl_event_window_mouse_enter(event, timestamp);
+}
+
+static void
+ecore_sdl_event_window_focus_gained(SDL_Event *event, unsigned int timestamp)
+{
+   Ecore_Sdl_Event_Window *ev;
+
+   ev = calloc(1, sizeof (Ecore_Sdl_Event_Window));
+   ev->windowID = event->window.windowID;
+
+   ecore_event_add(event->type == SDL_EVENT_WINDOW_FOCUS_GAINED ?
+                   ECORE_SDL_EVENT_GOT_FOCUS : ECORE_SDL_EVENT_LOST_FOCUS,
+                   ev, NULL, NULL);
+}
+
+static void
+ecore_sdl_event_window_focus_lost(SDL_Event *event, unsigned int timestamp)
+{
+   ecore_sdl_event_window_focus_gained(event, timestamp);
+}
+
 /**
  * Poll SDL for mouse, keyboard, and window events, and add corresponding events to ecore.
  * @ingroup Ecore_SDL_Library_Group
@@ -174,211 +392,32 @@ ecore_sdl_feed_events(void)
    while(SDL_PollEvent(&event))
      {
         timestamp = (unsigned int)((unsigned long long)(ecore_time_get() * 1000.0) & 0xffffffff);
+#define EVCASE(sdl_event, func) \
+          case sdl_event: ecore_sdl_event_ ## func(&event, timestamp); return;
         switch(event.type)
           {
-          case SDL_EVENT_MOUSE_MOTION:
-          {
-             Ecore_Event_Mouse_Move *ev;
+          EVCASE(SDL_EVENT_MOUSE_MOTION, mouse_motion);
+          EVCASE(SDL_EVENT_MOUSE_BUTTON_DOWN, mouse_button_down);
+          EVCASE(SDL_EVENT_MOUSE_WHEEL, mouse_wheel);
+          EVCASE(SDL_EVENT_MOUSE_BUTTON_UP, mouse_button_up);
+          EVCASE(SDL_EVENT_WINDOW_CLOSE_REQUESTED, window_close_requested);
+          EVCASE(SDL_EVENT_KEY_DOWN, key_down);
+          EVCASE(SDL_EVENT_KEY_UP, key_up);
+          EVCASE(SDL_EVENT_WINDOW_RESIZED, window_resized);
+          EVCASE(SDL_EVENT_WINDOW_EXPOSED, window_exposed);
+          EVCASE(SDL_EVENT_WINDOW_MOUSE_ENTER, window_mouse_enter);
+          EVCASE(SDL_EVENT_WINDOW_MOUSE_LEAVE, window_mouse_leave);
+          EVCASE(SDL_EVENT_WINDOW_FOCUS_GAINED, window_focus_gained);
+          EVCASE(SDL_EVENT_WINDOW_FOCUS_LOST, window_focus_lost);
 
-             ev = calloc(1, sizeof(Ecore_Event_Mouse_Move));
-             if (!ev) return;
-
-             ev->timestamp = timestamp;
-             ev->window = event.motion.windowID;
-             ev->event_window = event.motion.windowID;
-             ev->modifiers = 0; /* FIXME: keep modifier around. */
-             ev->x = event.motion.x;
-             ev->y = event.motion.y;
-             ev->root.x = ev->x;
-             ev->root.y = ev->y;
-
-             /* Must set multi touch device to 0 or it will get ignored */
-             ev->multi.device = 0;
-             ev->multi.radius = ev->multi.radius_x = ev->multi.radius_y = 0;
-             ev->multi.pressure = ev->multi.angle = 0;
-             ev->multi.x = ev->multi.y = ev->multi.root.x = ev->multi.root.y = 0;
-
-             ecore_event_add(ECORE_EVENT_MOUSE_MOVE, ev, NULL, NULL);
-             break;
-          }
-          case SDL_EVENT_MOUSE_BUTTON_DOWN:
-          {
-             Ecore_Event_Mouse_Button *ev;
-
-             ev = calloc(1, sizeof(Ecore_Event_Mouse_Button));
-             if (!ev) return;
-
-             ev->timestamp = timestamp;
-             ev->window = event.button.windowID;
-             ev->event_window = event.button.windowID;
-             ev->modifiers = 0; /* FIXME: keep modifier around. */
-             ev->buttons = event.button.button;
-             ev->double_click = 0;
-             ev->triple_click = 0;
-
-             /* Must set multi touch device to 0 or it will get ignored */
-             ev->multi.device = 0;
-             ev->multi.radius = ev->multi.radius_x = ev->multi.radius_y = 0;
-             ev->multi.pressure = ev->multi.angle = 0;
-             ev->multi.x = ev->multi.y = ev->multi.root.x = ev->multi.root.y = 0;
-
-             ecore_event_add(ECORE_EVENT_MOUSE_BUTTON_DOWN, ev, NULL, NULL);
-             break;
-          }
-          case SDL_EVENT_MOUSE_WHEEL:
-          {
-             Ecore_Event_Mouse_Wheel *ev;
-
-             ev = calloc(1, sizeof(Ecore_Event_Mouse_Wheel));
-             if (!ev) return;
-
-             ev->timestamp = timestamp;
-             ev->window = event.wheel.windowID;
-             ev->event_window = event.wheel.windowID;
-             ev->modifiers = 0; /* FIXME: keep modifier around. */
-             ev->direction = 0;
-             ev->z = (event.wheel.integer_x != 0) ? (event.wheel.integer_x) : (-event.wheel.integer_y);
-             ev->direction = (event.wheel.integer_x != 0) ? (0) : (1);
-
-             ecore_event_add(ECORE_EVENT_MOUSE_WHEEL, ev, NULL, NULL);
-             break;
-          }
-          case SDL_EVENT_MOUSE_BUTTON_UP:
-          {
-             Ecore_Event_Mouse_Button *ev;
-
-             ev = calloc(1, sizeof(Ecore_Event_Mouse_Button));
-             if (!ev) return;
-             ev->timestamp = timestamp;
-             ev->window = event.button.windowID;
-             ev->event_window = event.button.windowID;
-             ev->modifiers = 0; /* FIXME: keep modifier around. */
-             ev->buttons = event.button.button;
-             ev->double_click = 0;
-             ev->triple_click = 0;
-
-             /* Must set multi touch device to 0 or it will get ignored */
-             ev->multi.device = 0;
-             ev->multi.radius = ev->multi.radius_x = ev->multi.radius_y = 0;
-             ev->multi.pressure = ev->multi.angle = 0;
-             ev->multi.x = ev->multi.y = ev->multi.root.x = ev->multi.root.y = 0;
-
-             ecore_event_add(ECORE_EVENT_MOUSE_BUTTON_UP, ev, NULL, NULL);
-             break;
-          }
-          case SDL_EVENT_WINDOW_CLOSE_REQUESTED:
-          {
-               Ecore_Sdl_Event_Window *ev;
-
-               ev = calloc(1, sizeof (Ecore_Sdl_Event_Window));
-               ev->windowID = event.window.windowID;
-
-               ecore_event_add(ECORE_SDL_EVENT_WINDOW_CLOSE, ev, NULL, NULL);
-               break;
-          }
-          // fallthrough
           case SDL_EVENT_QUIT:
+             ecore_sdl_event_window_close_requested(&event, timestamp);
              ecore_main_loop_quit();
              break;
 
-          case SDL_EVENT_KEY_DOWN:
-          {
-             Ecore_SDL_Pressed *entry;
-             Ecore_Event_Key *ev;
-
-             entry = (Ecore_SDL_Pressed*) eina_rbtree_inline_lookup(repeat, &event.key.key, sizeof (event.key.key),
-                                                                    EINA_RBTREE_CMP_KEY_CB(_ecore_sdl_pressed_node), NULL);
-             if (entry)
-               {
-                  ev = _ecore_sdl_event_key(&event, timestamp);
-                  if (ev) ecore_event_add(ECORE_EVENT_KEY_UP, ev, NULL, NULL);
-               }
-
-             ev = _ecore_sdl_event_key(&event, timestamp);
-             if (ev) ecore_event_add(ECORE_EVENT_KEY_DOWN, ev, NULL, NULL);
-
-             if (!entry)
-               {
-                  entry = malloc(sizeof (Ecore_SDL_Pressed));
-                  if (!entry) break;
-
-                  entry->key = event.key.key;
-
-                  repeat = eina_rbtree_inline_insert(repeat, EINA_RBTREE_GET(entry),
-                                                     EINA_RBTREE_CMP_NODE_CB(_ecore_sdl_pressed_key), NULL);
-               }
-             break;
-          }
-          case SDL_EVENT_KEY_UP:
-          {
-             Ecore_Event_Key *ev;
-             Ecore_SDL_Pressed *entry;
-
-             entry = (Ecore_SDL_Pressed*) eina_rbtree_inline_lookup(repeat, &event.key.key, sizeof (event.key.key),
-                                                                    EINA_RBTREE_CMP_KEY_CB(_ecore_sdl_pressed_node), NULL);
-             if (entry)
-               {
-                  repeat = eina_rbtree_inline_remove(repeat, EINA_RBTREE_GET(entry),
-                                                     EINA_RBTREE_CMP_NODE_CB(_ecore_sdl_pressed_key), NULL);
-                  free(entry);
-               }
-
-             ev = _ecore_sdl_event_key(&event, timestamp);
-             if (ev) ecore_event_add(ECORE_EVENT_KEY_UP, ev, NULL, NULL);
-             break;
-          }
-
-          case SDL_EVENT_WINDOW_RESIZED:
-            {
-               Ecore_Sdl_Event_Video_Resize *ev;
-
-               ev = calloc(1, sizeof (Ecore_Sdl_Event_Video_Resize));
-               ev->windowID = event.window.windowID;
-               ev->w = event.window.data1;
-               ev->h = event.window.data2;
-
-               ecore_event_add(ECORE_SDL_EVENT_RESIZE, ev, NULL, NULL);
-               break;
-            }
-          case SDL_EVENT_WINDOW_EXPOSED:
-            {
-               Ecore_Sdl_Event_Window *ev;
-
-               ev = calloc(1, sizeof (Ecore_Sdl_Event_Window));
-               ev->windowID = event.window.windowID;
-
-               ecore_event_add(ECORE_SDL_EVENT_EXPOSE, ev, NULL, NULL);
-               break;
-            }
-          case SDL_EVENT_WINDOW_MOUSE_ENTER:
-          case SDL_EVENT_WINDOW_MOUSE_LEAVE:
-            {
-               Ecore_Event_Mouse_IO *ev;
-
-               ev = calloc(1, sizeof (Ecore_Event_Mouse_IO));
-               ev->window = event.window.windowID;
-               ev->event_window = event.window.windowID;
-
-               ecore_event_add(event.type == SDL_EVENT_WINDOW_MOUSE_ENTER ?
-                               ECORE_EVENT_MOUSE_IN : ECORE_EVENT_MOUSE_OUT,
-                               ev, NULL, NULL);
-               break;
-            }
-          case SDL_EVENT_WINDOW_FOCUS_GAINED:
-          case SDL_EVENT_WINDOW_FOCUS_LOST:
-            {
-               Ecore_Sdl_Event_Window *ev;
-
-               ev = calloc(1, sizeof (Ecore_Sdl_Event_Window));
-               ev->windowID = event.window.windowID;
-
-               ecore_event_add(event.type == SDL_EVENT_WINDOW_FOCUS_GAINED ?
-                               ECORE_SDL_EVENT_GOT_FOCUS : ECORE_SDL_EVENT_LOST_FOCUS,
-                               ev, NULL, NULL);
-               break;
-            }
           default:
              break;
           }
+#undef EVCASE
      }
 }

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.

Reply via email to