diff --git a/app/backend/stream/stream_input.c b/app/backend/stream/stream_input.c index f89af69..af2fa5a 100644 --- a/app/backend/stream/stream_input.c +++ b/app/backend/stream/stream_input.c @@ -42,6 +42,9 @@ bool stream_input_handle_mouse_event(stream_manager_t *manager, const SDL_Event if (!manager->app->settings->enable_input) { return true; } + if (event->motion.which == SDL_TOUCH_MOUSEID) { + return true; + } switch (event->type) { case SDL_MOUSEMOTION: { if (input_manager_get_and_reset_mouse_movement(manager->app->input_manager)) { @@ -102,4 +105,20 @@ bool stream_input_handle_mouse_event(stream_manager_t *manager, const SDL_Event } } return false; +} + +bool stream_input_handle_touch_event(stream_manager_t *manager, const SDL_TouchFingerEvent *event) { + if (!manager->app->settings->enable_input) { + return true; + } + if (event->type == SDL_FINGERDOWN) { + IHS_SessionSendTouchDown(manager->session, event->fingerId, event->x, event->y); + } else if (event->type == SDL_FINGERUP) { + IHS_SessionSendTouchUp(manager->session, event->fingerId, event->x, event->y); + } else if (event->type == SDL_FINGERMOTION) { + IHS_SessionSendTouchMotion(manager->session, event->fingerId, event->x, event->y); + } else { + return false; + } + return true; } \ No newline at end of file diff --git a/app/backend/stream/stream_input.h b/app/backend/stream/stream_input.h index e484063..70b9e7b 100644 --- a/app/backend/stream/stream_input.h +++ b/app/backend/stream/stream_input.h @@ -5,3 +5,5 @@ bool stream_input_handle_key_event(stream_manager_t *manager, const SDL_KeyboardEvent *event); bool stream_input_handle_mouse_event(stream_manager_t *manager, const SDL_Event *event); + +bool stream_input_handle_touch_event(stream_manager_t *manager, const SDL_TouchFingerEvent *event); \ No newline at end of file diff --git a/app/backend/stream/stream_manager.c b/app/backend/stream/stream_manager.c index 3e7f696..0130e82 100644 --- a/app/backend/stream/stream_manager.c +++ b/app/backend/stream/stream_manager.c @@ -198,6 +198,12 @@ void stream_manager_handle_event(stream_manager_t *manager, const SDL_Event *eve stream_input_handle_mouse_event(manager, event); break; } + case SDL_FINGERDOWN: + case SDL_FINGERUP: + case SDL_FINGERMOTION: { + stream_input_handle_touch_event(manager, &event->tfinger); + break; + } case SDL_CONTROLLERBUTTONDOWN: { if (event->cbutton.button == SDL_CONTROLLER_BUTTON_BACK) { controller_back_pressed(manager); diff --git a/app/main.c b/app/main.c index f8e9bd2..d94f689 100644 --- a/app/main.c +++ b/app/main.c @@ -142,7 +142,10 @@ static void process_events() { case SDL_CONTROLLERBUTTONDOWN: case SDL_CONTROLLERBUTTONUP: case SDL_CONTROLLERDEVICEADDED: - case SDL_CONTROLLERDEVICEREMOVED: { + case SDL_CONTROLLERDEVICEREMOVED: + case SDL_FINGERDOWN: + case SDL_FINGERUP: + case SDL_FINGERMOTION: { bool intercept_by_stream = stream_manager_intercept_event(app->stream_manager, &event); if (!intercept_by_stream) { app_sdl_input_event(app, &event); diff --git a/core b/core index 6b510bf..ef8b4b1 160000 --- a/core +++ b/core @@ -1 +1 @@ -Subproject commit 6b510bfda007b478588a3287a05a35124a182b63 +Subproject commit ef8b4b1682d6e388a1856d517cd9e05807d10e56 diff --git a/third_party/commons b/third_party/commons index 0a8e545..377a5c9 160000 --- a/third_party/commons +++ b/third_party/commons @@ -1 +1 @@ -Subproject commit 0a8e5453e7c6119a605f29ccc251cd24925114b2 +Subproject commit 377a5c95ba8885ccf910cac0cf9753feda98e570