summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--firmware/target/hosted/sdl/system-sdl.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/firmware/target/hosted/sdl/system-sdl.c b/firmware/target/hosted/sdl/system-sdl.c
index 750a0144a4..93a8a7cb66 100644
--- a/firmware/target/hosted/sdl/system-sdl.c
+++ b/firmware/target/hosted/sdl/system-sdl.c
@@ -138,8 +138,15 @@ static int sdl_event_thread(void * param)
}
#if (CONFIG_PLATFORM & (PLATFORM_MAEMO|PLATFORM_PANDORA))
- /* Hide mouse cursor on real touchscreen device */
- SDL_ShowCursor(SDL_DISABLE);
+ /* SDL touch screen fix: Work around a SDL assumption that returns
+ relative mouse coordinates when you get to the screen edges
+ using the touchscreen and a disabled mouse cursor.
+ */
+ uint8_t hiddenCursorData = 0;
+ SDL_Cursor *hiddenCursor = SDL_CreateCursor(&hiddenCursorData, &hiddenCursorData, 8, 1, 0, 0);
+
+ SDL_ShowCursor(SDL_ENABLE);
+ SDL_SetCursor(hiddenCursor);
#endif
SDL_WM_SetCaption(UI_TITLE, NULL);
@@ -174,6 +181,10 @@ static int sdl_event_thread(void * param)
SDL_WaitThread(maemo_thread, NULL);
#endif
+#if (CONFIG_PLATFORM & (PLATFORM_MAEMO|PLATFORM_PANDORA))
+ SDL_FreeCursor(hiddenCursor);
+#endif
+
if(picture_surface)
SDL_FreeSurface(picture_surface);