diff options
| author | 2026-04-13 16:16:25 -0400 | |
|---|---|---|
| committer | 2026-04-13 16:38:55 -0400 | |
| commit | 9913b7d590f46e59a475abbe85e70e02979d8d37 (patch) | |
| tree | 4cda8e52b89775bbeb082216f34d030d58161532 /src/window_glfm.c | |
| parent | d13e92193d21e112f45f3c92cf159f27498a3a55 (diff) | |
| download | stela-9913b7d590f46e59a475abbe85e70e02979d8d37.tar.gz stela-9913b7d590f46e59a475abbe85e70e02979d8d37.tar.bz2 stela-9913b7d590f46e59a475abbe85e70e02979d8d37.zip | |
Adjust window api, cleanup and update deps
Signed-off-by: Andrew Opalach <andrew@akon.city>
Diffstat (limited to 'src/window_glfm.c')
| -rw-r--r-- | src/window_glfm.c | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/src/window_glfm.c b/src/window_glfm.c index 202a55f..a799f5d 100644 --- a/src/window_glfm.c +++ b/src/window_glfm.c @@ -4,6 +4,7 @@ #include "window_glfm.h" #include "common.h" +#include "keys.h" f64 stl_scale_scroll(f64 v, f64 factor) { @@ -87,6 +88,28 @@ static void onOrientationChanged(GLFMDisplay *display, GLFMInterfaceOrientation global.orientation = orientation; } +static u8 glfm_to_stela_button_action[] = { + [GLFMKeyActionPressed] = STELA_BUTTON_PRESSED, + [GLFMKeyActionReleased] = STELA_BUTTON_RELEASED +}; + +static bool onKey(GLFMDisplay *display, GLFMKeyCode key, GLFMKeyAction action, s32 modifiers) +{ + struct stl_window_glfm *glfm = (struct stl_window_glfm *)glfmGetUserData(display); + (void)modifiers; + u8 mapped_action = glfm_to_stela_button_action[action]; + switch (key) { + case GLFMKeyCodeVolumeUp: + return stl_window_send_key_immediate_event(&glfm->w, mapped_action, STELA_KEY_RIGHT); + case GLFMKeyCodeVolumeDown: + return stl_window_send_key_immediate_event(&glfm->w, mapped_action, STELA_KEY_LEFT); + case GLFMKeyCodeNavigationBack: + default: + break; + } + return true; +} + static u8 glfm_to_stela_touch[] = { [GLFMTouchPhaseHover] = STELA_TOUCH_HOVER, [GLFMTouchPhaseBegan] = STELA_TOUCH_BEGAN, @@ -126,17 +149,19 @@ void glfmMain(GLFMDisplay *display) glfmSetRenderFunc(display, onDraw); glfmSetSurfaceDestroyedFunc(display, onSurfaceDestroyed); glfmSetOrientationChangedFunc(display, onOrientationChanged); + glfmSetKeyFunc(display, onKey); glfmSetTouchFunc(display, onTouch); } -static bool window_glfm_create_window(struct stl_window *window, u32 width, u32 height, - const char *monitor, const char *name, u32 flags) +static bool window_glfm_create_window(struct stl_window *window, u32 width, u32 height, u32 flags, + const char *monitor, const char *name, const char *app_id) { struct stl_window_glfm *glfm = (struct stl_window_glfm *)window; (void)width; (void)height; (void)monitor; (void)name; + (void)app_id; glfmSetUserData(global.display, glfm); s32 display_width, display_height; glfmGetDisplaySize(global.display, &display_width, &display_height); |