mirror of
https://gitlab.com/dosowisko.net/libsuperderpy.git
synced 2025-02-01 02:56:43 +01:00
maemo: rewrite mouse events into touch ones
This commit is contained in:
parent
a73e780668
commit
b67d146cdb
2 changed files with 41 additions and 4 deletions
|
@ -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")
|
||||
|
|
|
@ -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) {
|
||||
|
|
Loading…
Reference in a new issue