diff --git a/projects/Makefile b/projects/Makefile index 9fc7e43d1..00fd0a4ae 100644 --- a/projects/Makefile +++ b/projects/Makefile @@ -106,8 +106,8 @@ SDL2AUDIODIRS := \ BEAGLEBOARDDIRS := $(LINUXDIRS) $(DUMMYMIDIDIRS) $(RTAUDIODIRS) $(SDLDIRS) DEBDIRS := $(DBDIRS) $(JACKDIRS) $(RTAUDIODIRS) $(RTMIDIDIRS) $(SDLDIRS) -RASPIDIRS := $(DBDIRS) $(RTAUDIODIRS) $(RTMIDIDIRS) $(SDLDIRS) -RG35XXPLUSDIRS := $(LINUXDIRS) $(DUMMYMIDIDIRS) $(SDL2DIRS) $(SDL2AUDIODIRS) +DIRS := $(DBDIRS) $(RTAUDIODIRS) $(RTMIDIDIRS) $(SDLDIRS) +RG35XXPLUSDIRS := $(LINUXDIRS) $(RTMIDIDIRS) $(SDL2DIRS) $(SDL2AUDIODIRS) STEAMDIRS := $(LINUXDIRS) $(JACKDIRS) $(RTAUDIODIRS) $(RTMIDIDIRS) $(SDLDIRS) X64DIRS := $(LINUXDIRS) $(RTMIDIDIRS) $(SDL2DIRS) $(SDL2AUDIODIRS) X86DIRS := $(LINUXDIRS) $(RTMIDIDIRS) $(SDL2DIRS) $(SDL2AUDIODIRS) @@ -326,7 +326,7 @@ SDLAUDIOFILES := \ DEBFILES := $(DBFILES) $(RTAUDIOFILES) $(RTMIDIFILES) $(JACKFILES) BEAGLEBOARDFILES := $(LINUXFILES) $(DUMMYMIDIFILES) RASPIFILES := $(DBFILES) $(RTAUDIOFILES) $(RTMIDIFILES) -RG35XXPLUSFILES := $(LINUXFILES) $(SDLAUDIOFILES) $(DUMMYMIDIFILES) +RG35XXPLUSFILES := $(LINUXFILES) $(SDLAUDIOFILES) $(RTMIDIFILES) STEAMFILES := $(LINUXFILES) $(RTAUDIOFILES) $(RTMIDIFILES) $(JACKFILES) X64FILES := $(LINUXFILES) $(RTMIDIFILES) $(SDLAUDIOFILES) X86FILES := $(LINUXFILES) $(RTMIDIFILES) $(SDLAUDIOFILES) diff --git a/projects/Makefile.RG35XXPLUS b/projects/Makefile.RG35XXPLUS index dc04b211f..3b703340d 100644 --- a/projects/Makefile.RG35XXPLUS +++ b/projects/Makefile.RG35XXPLUS @@ -9,10 +9,13 @@ DEFINES := \ -DHAVE_STDINT_H \ -D_NDEBUG \ -D_NO_JACK_ \ + -D__LINUX_ALSA__ \ + -D__LINUX_ALSASEQ__ \ -DSDL2 \ - -DSDLAUDIO \ - -DDUMMYMIDI \ - -DFFMPEG_ENABLED + -DSDLAUDIO \ + -DRTMIDI \ + -DFFMPEG_ENABLED \ + -D_FEAT_MIDI_MULTITHREAD DEVKIT := /opt/rg35xx-plus-aarch64-SDL2-SDK-0.1.0/ CROSS_COMPILE:=$(DEVKIT)bin/aarch64-none-linux-gnu- @@ -27,8 +30,8 @@ SDL_LIBS := -lSDL2 OPT_FLAGS = -O3 -mlittle-endian -mabi=lp64 -march=armv8-a+crypto+crc -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -dumpbase INCLUDES = -Iinclude $(SDL_CFLAGS) -I$(DEVKIT)/$(TRIPLET)/include -I$(DEVKIT)/$(TRIPLET)/include/c++/11/ -I$(PWD)/../sources CFLAGS := $(DEFINES) $(INCLUDES) $(OPT_FLAGS) -Wall -CXXFLAGS:= $(CFLAGS) -std=gnu++03 -LIBS := -Wl,-rpath-link,$(DEVKIT)/$(TRIPLET)/lib -Wl,-rpath-link,$(DEVKIT)/$(TRIPLET)/lib/pulseaudio $(SDL_LIBS) -lpthread +CXXFLAGS:= $(CFLAGS) -std=gnu++11 +LIBS := -Wl,-rpath-link,$(DEVKIT)/$(TRIPLET)/lib -Wl,-rpath-link,$(DEVKIT)/$(TRIPLET)/lib/pulseaudio $(SDL_LIBS) -lpthread -lasound OUTPUT = ../lgpt-rg35xxplus EXTENSION:= elf diff --git a/sources/Adapters/SDL2/GUI/SDLGUIWindowImp.cpp b/sources/Adapters/SDL2/GUI/SDLGUIWindowImp.cpp index 7f4eb05ab..a849e5975 100644 --- a/sources/Adapters/SDL2/GUI/SDLGUIWindowImp.cpp +++ b/sources/Adapters/SDL2/GUI/SDLGUIWindowImp.cpp @@ -138,6 +138,7 @@ SDLGUIWindowImp::SDLGUIWindowImp(GUICreateWindowParams &p) instance_=this ; currentColor_=0; backgroundColor_=0 ; + foregroundColor_=0 ; SDL_ShowCursor(SDL_DISABLE); FontConfig(); @@ -176,11 +177,17 @@ void SDLGUIWindowImp::prepareFullFonts() for (int i=0;iformat->BitsPerPixel, + surface_->format->Rmask, + surface_->format->Gmask, + surface_->format->Bmask, + surface_->format->Amask); + } if (fonts[i]==NULL) { Trace::Error("[DISPLAY] Failed to create font surface %d",i) ; @@ -275,7 +282,12 @@ void SDLGUIWindowImp::DrawChar(const char c, GUIPoint &pos, GUITextProperties &p area->w=8*mult_ ; } - if (((cacheFonts_)&&(currentColor_==foregroundColor_)&&(!p.invert_))) { + bool useCache = false; + if (cacheFonts_ && (currentColor_ == foregroundColor_) && (!p.invert_)) { + useCache = true; + } + + if (useCache) { SDL_Rect srcRect ; srcRect.x=0 ; @@ -296,7 +308,7 @@ void SDLGUIWindowImp::DrawChar(const char c, GUIPoint &pos, GUITextProperties &p } else { // prepare bg & fg pixel ptr - int pixelSize=surface_->format->BytesPerPixel ; + int pixelSize=surface_->format->BytesPerPixel ; unsigned char *bgPtr=(unsigned char *)&backgroundColor_ ; unsigned char *fgPtr=(unsigned char *)¤tColor_ ; #if SDL_BYTEORDER == SDL_BIG_ENDIAN @@ -304,7 +316,7 @@ void SDLGUIWindowImp::DrawChar(const char c, GUIPoint &pos, GUITextProperties &p fgPtr+=(4-pixelSize) ; #endif const unsigned char *src=font+c*8 ; - unsigned char *dest=((unsigned char *)surface_->pixels) + (yy*surface_->pitch) + xx*pixelSize; + unsigned char *dest=((unsigned char *)surface_->pixels) + (yy*surface_->pitch) + xx*pixelSize; for (int y = 0; y < 8; y++) { for (int n=0;nformat->BytesPerPixel ; + int pixelSize=surface_->format->BytesPerPixel ; unsigned char *bgPtr=(unsigned char *)&backgroundColor_ ; unsigned char *fgPtr=(unsigned char *)¤tColor_ ; #if SDL_BYTEORDER == SDL_BIG_ENDIAN @@ -386,7 +403,7 @@ void SDLGUIWindowImp::DrawString(const char *string,GUIPoint &pos,GUITextPropert fgPtr+=(4-pixelSize) ; #endif const unsigned char *src=font+(string[l]*8) ; - unsigned char *dest=((unsigned char *)surface_->pixels) + (yy*surface_->pitch) + xx*pixelSize; + unsigned char *dest=((unsigned char *)surface_->pixels) + (yy*surface_->pitch) + xx*pixelSize; for (int y = 0; y < 8; y++) { for (int n=0;nformat,c._r&0xFF,c._g&0xFF,c._b&0xFF); + Uint32 newBg = SDL_MapRGB(surface_->format,c._r&0xFF,c._g&0xFF,c._b&0xFF); + if (newBg != backgroundColor_) { + backgroundColor_ = newBg; + if (cacheFonts_) { + prepareFullFonts(); + } + } SDL_FillRect(surface_, &rect,backgroundColor_) ; if (!framebuffer_)