Merge pull request #857 from morphis/disable-touch-input

sdl: disable touch input support by default
This commit is contained in:
Simon Fels 2018-08-10 21:16:32 +02:00 committed by GitHub
commit 4c6a7dc116
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 21 additions and 3 deletions

View file

@ -136,3 +136,8 @@ configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in"
add_custom_target(uninstall "${CMAKE_COMMAND}"
-P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake")
option(TOUCH_INPUT "Enable touch input support" OFF)
if (TOUCH_INPUT)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DENABLE_TOUCH_INPUT")
endif()

View file

@ -101,6 +101,7 @@ Platform::Platform(
keyboard_->set_key_bit(BTN_MISC);
keyboard_->set_key_bit(KEY_OK);
#ifdef ENABLE_TOUCH_INPUT
touch_ = input_manager->create_device();
touch_->set_name("anbox-touch");
touch_->set_driver_version(1);
@ -122,6 +123,7 @@ Platform::Platform(
touch_->set_abs_bit(ABS_MT_TRACKING_ID);
touch_->set_abs_max(ABS_MT_TRACKING_ID, 10);
touch_->set_prop_bit(INPUT_PROP_DIRECT);
#endif
event_thread_ = std::thread(&Platform::process_events, this);
}
@ -189,8 +191,10 @@ void Platform::process_input_event(const SDL_Event &event) {
std::int32_t x = 0;
std::int32_t y = 0;
#ifdef ENABLE_TOUCH_INPUT
std::int32_t rel_x = 0;
std::int32_t rel_y = 0;
#endif
SDL_Window *window = nullptr;
@ -251,6 +255,7 @@ void Platform::process_input_event(const SDL_Event &event) {
keyboard_events.push_back({EV_KEY, code, 0});
break;
}
#ifdef ENABLE_TOUCH_INPUT
// Touch screen
case SDL_FINGERDOWN: {
touch_events.push_back({EV_ABS, ABS_MT_TRACKING_ID, static_cast<std::int32_t>(event.tfinger.fingerId)});
@ -343,13 +348,21 @@ void Platform::process_input_event(const SDL_Event &event) {
touch_events.push_back({EV_SYN, SYN_REPORT, 0});
break;
}
#endif
default:
break;
}
if (mouse_events.size() > 0) pointer_->send_events(mouse_events);
if (keyboard_events.size() > 0) keyboard_->send_events(keyboard_events);
if (touch_events.size() > 0) touch_->send_events(touch_events);
if (mouse_events.size() > 0)
pointer_->send_events(mouse_events);
if (keyboard_events.size() > 0)
keyboard_->send_events(keyboard_events);
#ifdef ENABLE_TOUCH_INPUT
if (touch_events.size() > 0)
touch_->send_events(touch_events);
#endif
}
Window::Id Platform::next_window_id() {