Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Supports Full Touch Events #53

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions app/backend/stream/stream_input.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)) {
Expand Down Expand Up @@ -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;
}
2 changes: 2 additions & 0 deletions app/backend/stream/stream_input.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);
6 changes: 6 additions & 0 deletions app/backend/stream/stream_manager.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
5 changes: 4 additions & 1 deletion app/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
2 changes: 1 addition & 1 deletion core
Submodule core updated 138 files
2 changes: 1 addition & 1 deletion third_party/commons