Brought back software cursor, since several Mali based platforms show no cursor at all in GUI otherwise
This commit is contained in:
parent
6e95d62ae9
commit
a635fe62a0
2 changed files with 57 additions and 9 deletions
16
Makefile
16
Makefile
|
@ -89,7 +89,7 @@ else ifeq ($(PLATFORM),$(filter $(PLATFORM),rpi1-sdl2 rpi2-sdl2 rpi3-sdl2 rpi4-s
|
|||
else ifeq ($(PLATFORM),orangepi-pc)
|
||||
USE_SDL2 = 1
|
||||
CPUFLAGS = -mcpu=cortex-a7 -mfpu=neon-vfpv4
|
||||
CPPFLAGS += -DARMV6_ASSEMBLY -D_FILE_OFFSET_BITS=64 -DARMV6T2 -DUSE_ARMNEON -DARM_HAS_DIV -DUSE_SDL2 -DNO_CUSTOM_CURSOR -DUSE_RENDER_THREAD
|
||||
CPPFLAGS += -DARMV6_ASSEMBLY -D_FILE_OFFSET_BITS=64 -DARMV6T2 -DUSE_ARMNEON -DARM_HAS_DIV -DUSE_SDL2 -DSOFTWARE_CURSOR -DUSE_RENDER_THREAD
|
||||
HAVE_NEON = 1
|
||||
ifdef DEBUG
|
||||
# Otherwise we'll get compilation errors, check https://tls.mbed.org/kb/development/arm-thumb-error-r7-cannot-be-used-in-asm-here
|
||||
|
@ -101,7 +101,7 @@ USE_SDL2 = 1
|
|||
else ifeq ($(PLATFORM),xu4)
|
||||
USE_SDL2 = 1
|
||||
CPUFLAGS += -mcpu=cortex-a15.cortex-a7 -mfpu=neon-vfpv4
|
||||
CPPFLAGS += -DARMV6_ASSEMBLY -D_FILE_OFFSET_BITS=64 -DARMV6T2 -DUSE_ARMNEON -DARM_HAS_DIV -DUSE_SDL2 -DNO_CUSTOM_CURSOR -DUSE_RENDER_THREAD -DFASTERCYCLES
|
||||
CPPFLAGS += -DARMV6_ASSEMBLY -D_FILE_OFFSET_BITS=64 -DARMV6T2 -DUSE_ARMNEON -DARM_HAS_DIV -DUSE_SDL2 -DSOFTWARE_CURSOR -DUSE_RENDER_THREAD -DFASTERCYCLES
|
||||
HAVE_NEON = 1
|
||||
ifdef DEBUG
|
||||
# Otherwise we'll get compilation errors, check https://tls.mbed.org/kb/development/arm-thumb-error-r7-cannot-be-used-in-asm-here
|
||||
|
@ -113,7 +113,7 @@ else ifeq ($(PLATFORM),xu4)
|
|||
else ifeq ($(PLATFORM),c1)
|
||||
USE_SDL2 = 1
|
||||
CPUFLAGS += -mcpu=cortex-a5 -mfpu=neon-vfpv4
|
||||
CPPFLAGS += -DARMV6_ASSEMBLY -D_FILE_OFFSET_BITS=64 -DARMV6T2 -DUSE_ARMNEON -DARM_HAS_DIV -DUSE_SDL2 -DNO_CUSTOM_CURSOR -DUSE_RENDER_THREAD -DFASTERCYCLES
|
||||
CPPFLAGS += -DARMV6_ASSEMBLY -D_FILE_OFFSET_BITS=64 -DARMV6T2 -DUSE_ARMNEON -DARM_HAS_DIV -DUSE_SDL2 -DSOFTWARE_CURSOR -DUSE_RENDER_THREAD -DFASTERCYCLES
|
||||
HAVE_NEON = 1
|
||||
ifdef DEBUG
|
||||
# Otherwise we'll get compilation errors, check https://tls.mbed.org/kb/development/arm-thumb-error-r7-cannot-be-used-in-asm-here
|
||||
|
@ -125,7 +125,7 @@ else ifeq ($(PLATFORM),c1)
|
|||
else ifeq ($(PLATFORM),n2)
|
||||
USE_SDL2 = 1
|
||||
CPUFLAGS += -mcpu=cortex-a72.cortex-a53
|
||||
CPPFLAGS += -DCPU_AARCH64 -D_FILE_OFFSET_BITS=64 -DUSE_SDL2 -DNO_CUSTOM_CURSOR -DFASTERCYCLES
|
||||
CPPFLAGS += -DCPU_AARCH64 -D_FILE_OFFSET_BITS=64 -DUSE_SDL2 -DSOFTWARE_CURSOR -DFASTERCYCLES
|
||||
AARCH64 = 1
|
||||
|
||||
# Raspberry Pi 3/4 (SDL2 64-bit)
|
||||
|
@ -140,7 +140,7 @@ else ifeq ($(PLATFORM),vero4k)
|
|||
USE_SDL2 = 1
|
||||
CPUFLAGS = -mcpu=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard
|
||||
CFLAGS += -ftree-vectorize -funsafe-math-optimizations
|
||||
CPPFLAGS += -I/opt/vero3/include -DARMV6_ASSEMBLY -D_FILE_OFFSET_BITS=64 -DARMV6T2 -DUSE_ARMNEON -DARM_HAS_DIV -DUSE_SDL2 -DNO_CUSTOM_CURSOR -DUSE_RENDER_THREAD -DFASTERCYCLES
|
||||
CPPFLAGS += -I/opt/vero3/include -DARMV6_ASSEMBLY -D_FILE_OFFSET_BITS=64 -DARMV6T2 -DUSE_ARMNEON -DARM_HAS_DIV -DUSE_SDL2 -DSOFTWARE_CURSOR -DUSE_RENDER_THREAD -DFASTERCYCLES
|
||||
LDFLAGS += -L/opt/vero3/lib
|
||||
HAVE_NEON = 1
|
||||
|
||||
|
@ -148,7 +148,7 @@ USE_SDL2 = 1
|
|||
else ifneq (,$(findstring AMLG,$(PLATFORM)))
|
||||
USE_SDL2 = 1
|
||||
CPUFLAGS += -mfloat-abi=hard -mfpu=neon-fp-armv8
|
||||
CPPFLAGS += -DARMV6_ASSEMBLY -D_FILE_OFFSET_BITS=64 -DARMV6T2 -DUSE_ARMNEON -DARM_HAS_DIV -DUSE_SDL2 -DNO_CUSTOM_CURSOR -DFASTERCYCLES
|
||||
CPPFLAGS += -DARMV6_ASSEMBLY -D_FILE_OFFSET_BITS=64 -DARMV6T2 -DUSE_ARMNEON -DARM_HAS_DIV -DUSE_SDL2 -DSOFTWARE_CURSOR -DFASTERCYCLES
|
||||
HAVE_NEON = 1
|
||||
|
||||
ifneq (,$(findstring AMLG12,$(PLATFORM)))
|
||||
|
@ -167,7 +167,7 @@ USE_SDL2 = 1
|
|||
# Rockchip RK3288 e.g. Asus Tinker Board / RK3328 e.g. PINE64 Rock64 / RK3399 e.g. PINE64 RockPro64 - 32-bit userspace
|
||||
else ifneq (,$(findstring RK,$(PLATFORM)))
|
||||
USE_SDL2 = 1
|
||||
CPPFLAGS += -DARMV6_ASSEMBLY -D_FILE_OFFSET_BITS=64 -DARMV6T2 -DUSE_ARMNEON -DARM_HAS_DIV -DUSE_SDL2 -DFASTERCYCLES -DUSE_RENDER_THREAD -DNO_CUSTOM_CURSOR
|
||||
CPPFLAGS += -DARMV6_ASSEMBLY -D_FILE_OFFSET_BITS=64 -DARMV6T2 -DUSE_ARMNEON -DARM_HAS_DIV -DUSE_SDL2 -DFASTERCYCLES -DUSE_RENDER_THREAD -DSOFTWARE_CURSOR
|
||||
HAVE_NEON = 1
|
||||
|
||||
ifneq (,$(findstring RK33,$(PLATFORM)))
|
||||
|
@ -185,7 +185,7 @@ USE_SDL2 = 1
|
|||
else ifeq ($(PLATFORM),sun8i)
|
||||
USE_SDL2 = 1
|
||||
CPUFLAGS += -mcpu=cortex-a7 -mfpu=neon-vfpv4
|
||||
CPPFLAGS += -DARMV6_ASSEMBLY -D_FILE_OFFSET_BITS=64 -DARMV6T2 -DUSE_ARMNEON -DARM_HAS_DIV -DUSE_SDL2 -DNO_CUSTOM_CURSOR -DUSE_RENDER_THREAD
|
||||
CPPFLAGS += -DARMV6_ASSEMBLY -D_FILE_OFFSET_BITS=64 -DARMV6T2 -DUSE_ARMNEON -DARM_HAS_DIV -DUSE_SDL2 -DSOFTWARE_CURSOR -DUSE_RENDER_THREAD
|
||||
HAVE_NEON = 1
|
||||
NAME = amiberry-sun8i
|
||||
ifdef DEBUG
|
||||
|
|
|
@ -107,6 +107,11 @@ SDL_Event gui_event;
|
|||
SDL_Texture* gui_texture;
|
||||
SDL_Cursor* cursor;
|
||||
SDL_Surface* cursor_surface;
|
||||
#ifdef SOFTWARE_CURSOR
|
||||
SDL_Texture* swcursor_texture = NULL;
|
||||
static SDL_DisplayMode physmode;
|
||||
static double mscalex, mscaley;
|
||||
#endif // SOFTWARE_CURSOR
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
@ -225,6 +230,35 @@ static void ShowHelpRequested()
|
|||
}
|
||||
}
|
||||
|
||||
#ifdef SOFTWARE_CURSOR
|
||||
static SDL_Rect dst;
|
||||
void swcursor(bool op) {
|
||||
if (op == -1) {
|
||||
SDL_DestroyTexture(swcursor_texture);
|
||||
swcursor_texture = NULL;
|
||||
|
||||
}
|
||||
else if (op == 0) {
|
||||
cursor_surface = SDL_LoadBMP("data/cursor.bmp");
|
||||
swcursor_texture = SDL_CreateTextureFromSurface(renderer, cursor_surface);
|
||||
// Hide real cursor
|
||||
SDL_SetCursor(SDL_CreateSystemCursor(SDL_SYSTEM_CURSOR_ARROW));
|
||||
SDL_ShowCursor(0);
|
||||
// Set cursor width,height to that of loaded bmp
|
||||
dst.w = cursor_surface->w;
|
||||
dst.h = cursor_surface->h;
|
||||
SDL_FreeSurface(cursor_surface);
|
||||
|
||||
}
|
||||
else {
|
||||
SDL_GetMouseState(&dst.x, &dst.y);
|
||||
dst.x *= mscalex * 1.03;
|
||||
dst.y *= mscaley * 1.005;
|
||||
SDL_RenderCopy(renderer, swcursor_texture, nullptr, &dst);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
void UpdateGuiScreen()
|
||||
{
|
||||
#ifdef USE_SDL1
|
||||
|
@ -233,6 +267,9 @@ void UpdateGuiScreen()
|
|||
#elif USE_SDL2
|
||||
SDL_RenderClear(renderer);
|
||||
SDL_RenderCopy(renderer, gui_texture, nullptr, nullptr);
|
||||
#ifdef SOFTWARE_CURSOR
|
||||
swcursor(1);
|
||||
#endif
|
||||
SDL_RenderPresent(renderer);
|
||||
#endif
|
||||
}
|
||||
|
@ -298,7 +335,11 @@ namespace sdl
|
|||
SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL);
|
||||
SDL_ShowCursor(SDL_ENABLE);
|
||||
#elif USE_SDL2
|
||||
#ifdef NO_CUSTOM_CURSOR
|
||||
#ifdef SOFTWARE_CURSOR
|
||||
swcursor(0);
|
||||
SDL_GetCurrentDisplayMode(0, &physmode);
|
||||
mscalex = ((double)GUI_WIDTH / (double)physmode.w);
|
||||
mscaley = ((double)GUI_HEIGHT / (double)physmode.h);
|
||||
#else
|
||||
setup_cursor();
|
||||
#endif
|
||||
|
@ -378,6 +419,13 @@ namespace sdl
|
|||
cursor = nullptr;
|
||||
}
|
||||
|
||||
#ifdef SOFTWARE_CURSOR
|
||||
if (cursor_surface)
|
||||
{
|
||||
SDL_FreeSurface(cursor_surface);
|
||||
cursor_surface = nullptr;
|
||||
}
|
||||
#endif
|
||||
// Clear the screen
|
||||
SDL_RenderClear(renderer);
|
||||
SDL_RenderPresent(renderer);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue