maemo: rewrite mouse events into touch ones

This commit is contained in:
Sebastian Krzyszkowiak 2018-10-30 18:05:54 +01:00
parent a73e780668
commit b67d146cdb
No known key found for this signature in database
GPG key ID: E8F235CF3BDBC3FF
2 changed files with 41 additions and 4 deletions

View file

@ -9,9 +9,9 @@ if (NOT LIBSUPERDERPY_CONFIG_INCLUDED)
set(CMAKE_C_STANDARD 99)
set(CMAKE_C_STANDARD_REQUIRED true)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -ffast-math")
if(MAEMO)
if(MAEMO5)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99")
endif(MAEMO)
endif(MAEMO5)
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -O1 -fno-optimize-sibling-calls -fno-omit-frame-pointer -fsanitize=leak -DLEAK_SANITIZER=1 -fno-common -fsanitize-recover=all")
if(APPLE)
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-undefined,error")
@ -53,9 +53,10 @@ if (NOT LIBSUPERDERPY_CONFIG_INCLUDED)
)
endif(NOT DEFINED LIBSUPERDERPY_NO_GAME_GIT_REV)
if(MAEMO)
if(MAEMO5)
add_definitions(-DMAEMO5=1)
add_definitions(-D_Noreturn=)
endif(MAEMO)
endif(MAEMO5)
if(APPLE)
if(CMAKE_INSTALL_PREFIX MATCHES "/usr/local")

View file

@ -85,6 +85,42 @@ static inline void HandleEvent(struct Game* game, ALLEGRO_EVENT* ev) {
default:
break;
}
#ifdef MAEMO5
// on Maemo we get mouse events instead of touch ones, so we'll rewrite them by ourselves
if ((ev->type == ALLEGRO_EVENT_MOUSE_AXES) || (ev->type == ALLEGRO_EVENT_MOUSE_BUTTON_DOWN) || (ev->type == ALLEGRO_EVENT_MOUSE_BUTTON_UP)) {
switch (ev->type) {
case ALLEGRO_EVENT_MOUSE_BUTTON_DOWN:
ev->type = ALLEGRO_EVENT_TOUCH_BEGIN;
break;
case ALLEGRO_EVENT_MOUSE_BUTTON_UP:
ev->type = ALLEGRO_EVENT_TOUCH_END;
break;
case ALLEGRO_EVENT_MOUSE_AXES:
ev->type = ALLEGRO_EVENT_TOUCH_MOVE;
break;
default:
break;
}
ALLEGRO_DISPLAY* display = ev->mouse.display;
float dx = ev->mouse.dx;
float dy = ev->mouse.dy;
float x = ev->mouse.x;
float y = ev->mouse.y;
double timestamp = ev->mouse.timestamp;
ev->touch.display = display;
ev->touch.dx = dx;
ev->touch.dy = dy;
ev->touch.id = 0;
ev->touch.primary = true;
ev->touch.source = (ALLEGRO_TOUCH_INPUT*)al_get_touch_input_event_source();
ev->touch.timestamp = timestamp;
ev->touch.x = x;
ev->touch.y = y;
}
#endif
}
static inline void HandleDebugEvent(struct Game* game, ALLEGRO_EVENT* ev) {