diff --git a/Makefile b/Makefile index 145289108..f402f033f 100644 --- a/Makefile +++ b/Makefile @@ -121,9 +121,20 @@ $(EXEEXTSHADER): $(FOBJHELPERS) $(FOBJMODULES) $(FOBJEXTSHADER) libeepp-$(ARCH).a: $(FOBJHELPERS) $(FOBJMODULES) $(AR) $(ARFLAGS) $(LIBNAME) $(FOBJHELPERS) $(FOBJMODULES) +ifneq ($(STATIC_LIBS),) + $(AR) x $(STATIC_LIBS) + $(AR) q $(LIBNAME) *.o + $(RM) *.o +endif libeepp.a: $(FOBJHELPERS) $(FOBJMODULES) + rm $(LIBNAME) $(AR) $(ARFLAGS) $(LIBNAME) $(FOBJHELPERS) $(FOBJMODULES) +ifneq ($(STATIC_LIBS),) + $(AR) x $(STATIC_LIBS) + $(AR) q $(LIBNAME) *.o + $(RM) *.o +endif $(DYLIB): $(FOBJHELPERS) $(FOBJMODULES) $(CPP) $(LDFLAGS) $(DYLIB_EXTRA) -o $(LIBNAME) $(FOBJHELPERS) $(FOBJMODULES) $(LIBS) diff --git a/Makefile.base b/Makefile.base index 6577f1a9b..2dd32c9fa 100644 --- a/Makefile.base +++ b/Makefile.base @@ -24,6 +24,7 @@ export RM = rm -rf FRAMEWORKFLAGS = STATIC_LIBS = +DYLIBS_BACKENDS = ifeq ($(BUILD_OS), mingw32) @@ -224,6 +225,8 @@ ifeq ($(BACKEND_SDL),yes) SDL_BACKEND_SRC = $(wildcard ./src/eepp/window/backend/SDL/*.cpp) EE_SDL_VERSION = -DEE_SDL_VERSION_1_2 + + DYLIBS_BACKENDS += $(SDL_BACKEND_LINK) else ifeq ($(SHARED_BACKEND),) #Check if static library exists @@ -256,6 +259,8 @@ ifeq ($(BACKEND_SDL),yes) EE_SDL_VERSION = -DEE_SDL_VERSION_2 endif + + DYLIBS_BACKENDS += $(SDL_BACKEND_LINK) else # Compile as static then... ( only SDL 1.3 or SDL 2 allowed ) @@ -266,7 +271,7 @@ ifeq ($(BACKEND_SDL),yes) EE_SDL_VERSION = -DEE_SDL_VERSION_1_3 else # If version is 2.x.x - SDL_BACKEND_LINK = libs/$(BUILD_OS)/libSDL2$(ARCHEXT).a + SDL_BACKEND_LINK = libs/$(BUILD_OS)/libSDL2.a EE_SDL_VERSION = -DEE_SDL_VERSION_2 endif @@ -290,8 +295,11 @@ ifeq ($(BACKEND_ALLEGRO), yes) else ALLEGRO_BACKEND_LINK = -lallegro endif + + DYLIBS_BACKENDS += $(ALLEGRO_BACKEND_LINK) else ALLEGRO_BACKEND_LINK = libs/$(BUILD_OS)/liballegro.a libs/$(BUILD_OS)/liballegro_main.a + STATIC_LIBS += $(ALLEGRO_BACKEND_LINK) endif ALLEGRO_BACKEND_SRC = $(wildcard ./src/eepp/window/backend/allegro5/*.cpp) @@ -305,8 +313,10 @@ endif ifeq ($(BACKEND_SFML), yes) ifeq ($(STATIC_SFML),) SFML_BACKEND_LINK = -lsfml-system -lsfml-window + DYLIBS_BACKENDS += $(SFML_BACKEND_LINK) else SFML_BACKEND_LINK = libs/$(BUILD_OS)/libsfml-system.a libs/$(BUILD_OS)/libsfml-window.a + STATIC_LIBS += $(SFML_BACKEND_LINK) endif SFML_BACKEND_SRC = $(wildcard ./src/eepp/window/backend/SFML/*.cpp) @@ -317,7 +327,7 @@ else SFML_DEFINE = endif -BACKENDFLAGS = $(SDL_DEFINE) $(ALLEGRO_DEFINE) $(SFML_DEFINE) +BACKENDFLAGS = $(SDL_DEFINE) $(ALLEGRO_DEFINE) $(SFML_DEFINE) ifeq ($(LIBSNDFILE_ENABLE),yes) ifeq ($(MINGW32),yes) @@ -396,7 +406,8 @@ BININC = -I./include/ ##################### OS BUILD OPTIONS ##################### ifeq ($(BUILD_OS), linux) -LIBS = -lrt -lpthread -lX11 -lopenal -lGL -lXcursor $(LIBSNDFILE) $(SDL_BACKEND_LINK) $(ALLEGRO_BACKEND_LINK) $(SFML_BACKEND_LINK) $(LIBFREETYPE2) +DYLIBS = -lrt -lpthread -lX11 -lopenal -lGL -lXcursor $(LIBFREETYPE2) $(DYLIBS_BACKENDS) +LIBS = $(DYLIBS) $(LIBSNDFILE) $(STATIC_LIBS) OTHERINC += $(INCFREETYPE2) PLATFORMSRC = $(wildcard ./src/eepp/window/platform/x11/*.cpp) $(wildcard ./src/eepp/system/platform/posix/*.cpp) diff --git a/include/eepp/graphics/cimage.hpp b/include/eepp/graphics/cimage.hpp index d89b82795..d40bd8c1c 100644 --- a/include/eepp/graphics/cimage.hpp +++ b/include/eepp/graphics/cimage.hpp @@ -107,6 +107,7 @@ class EE_API cImage { eeUint mChannels; Uint32 mSize; bool mAvoidFree; + bool mLoadedFromStbi; void Allocate( const Uint32& size, eeColorA DefaultColor = eeColorA(0,0,0,0) ); diff --git a/include/eepp/window/cwindow.hpp b/include/eepp/window/cwindow.hpp index 035fa91c0..c517cc15a 100644 --- a/include/eepp/window/cwindow.hpp +++ b/include/eepp/window/cwindow.hpp @@ -217,7 +217,7 @@ class EE_API cWindow { virtual const Uint32& GetHeight() const; /** @return The current desktop resolution */ - virtual const eeSize& GetDesktopResolution() const; + virtual const eeSize& GetDesktopResolution(); /** Center the window to the desktop ( if windowed ) */ virtual void Center(); diff --git a/include/eepp/window/inputevent.hpp b/include/eepp/window/inputevent.hpp index 917ad5feb..9794e7c80 100644 --- a/include/eepp/window/inputevent.hpp +++ b/include/eepp/window/inputevent.hpp @@ -10,7 +10,7 @@ namespace EE { namespace Window { class InputEvent { public: - inline InputEvent() {} + inline InputEvent() : Type( NoEvent ) {} inline InputEvent( Uint32 type ) : Type( type ) {} diff --git a/projects/linux/ee.creator.user b/projects/linux/ee.creator.user index c90f80dbf..f594b1352 100644 --- a/projects/linux/ee.creator.user +++ b/projects/linux/ee.creator.user @@ -1,6 +1,6 @@ - + ProjectExplorer.Project.ActiveTarget @@ -18,13 +18,7 @@ CppGlobal - - QmlJS - - QmlJSGlobal - - - 2 + 1 System false 4 @@ -54,7 +48,7 @@ Desktop Desktop {388e5431-b31b-42b3-b9ad-9002d279d75d} - 0 + 2 0 0 @@ -63,7 +57,7 @@ false - -j4 -e DEBUGBUILD=yes test + -j4 -e DEBUGBUILD=yes SHARED_BACKEND=no test true diff --git a/src/eepp/graphics/cimage.cpp b/src/eepp/graphics/cimage.cpp index c61da7425..954fc96ee 100644 --- a/src/eepp/graphics/cimage.cpp +++ b/src/eepp/graphics/cimage.cpp @@ -10,7 +10,8 @@ cImage::cImage() : mHeight(0), mChannels(0), mSize(0), - mAvoidFree(false) + mAvoidFree(false), + mLoadedFromStbi(false) { } @@ -20,7 +21,8 @@ cImage::cImage( const Uint8* data, const eeUint& Width, const eeUint& Height, co mHeight(Height), mChannels(Channels), mSize(0), - mAvoidFree(false) + mAvoidFree(false), + mLoadedFromStbi(false) { SetPixels( data ); } @@ -31,7 +33,8 @@ cImage::cImage( const Uint32& Width, const Uint32& Height, const Uint32& Channel mHeight(Height), mChannels(Channels), mSize(0), - mAvoidFree(false) + mAvoidFree(false), + mLoadedFromStbi(false) { Create( Width, Height, Channels, DefaultColor ); } @@ -42,7 +45,8 @@ cImage::cImage( Uint8* data, const eeUint& Width, const eeUint& Height, const ee mHeight(Height), mChannels(Channels), mSize(Width*Height*Channels), - mAvoidFree(false) + mAvoidFree(false), + mLoadedFromStbi(false) { } @@ -52,7 +56,8 @@ cImage::cImage( std::string Path ) : mHeight(0), mChannels(0), mSize(0), - mAvoidFree(false) + mAvoidFree(false), + mLoadedFromStbi(false) { int w, h, c; cPack * tPack = NULL; @@ -66,10 +71,7 @@ cImage::cImage( std::string Path ) : mSize = mWidth * mHeight * mChannels; - //! HACK: This is a hack to make the memory manager recognize the allocated data - #ifdef EE_MEMORY_MANAGER - MemoryManager::AddPointer( cAllocatedPointer( (void*)data, __FILE__, __LINE__, mSize ) ); - #endif + mLoadedFromStbi = true; } else if ( cPackManager::instance()->FallbackToPacks() && NULL != ( tPack = cPackManager::instance()->Exists( Path ) ) ) { LoadFromPack( tPack, Path ); } else { @@ -83,7 +85,8 @@ cImage::cImage( cPack * Pack, std::string FilePackPath ) : mHeight(0), mChannels(0), mSize(0), - mAvoidFree(false) + mAvoidFree(false), + mLoadedFromStbi(false) { LoadFromPack( Pack, FilePackPath ); } @@ -110,10 +113,7 @@ void cImage::LoadFromPack( cPack * Pack, const std::string& FilePackPath ) { mSize = mWidth * mHeight * mChannels; - //! HACK: This is a hack to make the memory manager recognize the allocated data - #ifdef EE_MEMORY_MANAGER - MemoryManager::AddPointer( cAllocatedPointer( (void*)data, __FILE__, __LINE__, mSize ) ); - #endif + mLoadedFromStbi = true; } else { cLog::instance()->Write( "Failed to load image, reason: " + std::string( stbi_failure_reason() ) ); } @@ -195,7 +195,11 @@ eeUint cImage::Size() const { } void cImage::ClearCache() { - eeSAFE_DELETE_ARRAY( mPixels ); + if ( mLoadedFromStbi ) { + free( mPixels ); + } else { + eeSAFE_DELETE_ARRAY( mPixels ); + } } void cImage::Width( const eeUint& width ) { diff --git a/src/eepp/graphics/ctexturefactory.cpp b/src/eepp/graphics/ctexturefactory.cpp index abbbaca1f..f0bc6b369 100755 --- a/src/eepp/graphics/ctexturefactory.cpp +++ b/src/eepp/graphics/ctexturefactory.cpp @@ -7,6 +7,7 @@ namespace EE { namespace Graphics { SINGLETON_DECLARE_IMPLEMENTATION(cTextureFactory) cTextureFactory::cTextureFactory() : + mLastBlend(ALPHA_NORMAL), mMemSize(0), mErasing(false) { diff --git a/src/eepp/window/backend/SDL2/cwindowsdl.cpp b/src/eepp/window/backend/SDL2/cwindowsdl.cpp index a3ac312fe..3d9d721c8 100644 --- a/src/eepp/window/backend/SDL2/cwindowsdl.cpp +++ b/src/eepp/window/backend/SDL2/cwindowsdl.cpp @@ -479,6 +479,18 @@ eeVector2i cWindowSDL::Position() { return p; } +void cWindowSDL::UpdateDesktopResolution() { + SDL_DisplayMode dpm; + SDL_GetWindowDisplayMode( mSDLWindow, &dpm ); + + mWindow.DesktopResolution = eeSize( dpm.w, dpm.h ); +} + +const eeSize& cWindowSDL::GetDesktopResolution() { + UpdateDesktopResolution(); + return cWindow::GetDesktopResolution(); +} + SDL_Window * cWindowSDL::GetSDLWindow() const { return mSDLWindow; } diff --git a/src/eepp/window/backend/SDL2/cwindowsdl.hpp b/src/eepp/window/backend/SDL2/cwindowsdl.hpp index 04b168ef0..ea3b0d66d 100644 --- a/src/eepp/window/backend/SDL2/cwindowsdl.hpp +++ b/src/eepp/window/backend/SDL2/cwindowsdl.hpp @@ -58,6 +58,8 @@ class EE_API cWindowSDL : public cWindow { virtual eeVector2i Position(); + const eeSize& GetDesktopResolution(); + SDL_Window * GetSDLWindow() const; protected: friend class cClipboardSDL; @@ -78,6 +80,8 @@ class EE_API cWindowSDL : public cWindow { void SetGLConfig(); std::string GetVersion(); + + void UpdateDesktopResolution(); }; }}}} diff --git a/src/eepp/window/cwindow.cpp b/src/eepp/window/cwindow.cpp index 7fabd79f6..004d0d8d4 100644 --- a/src/eepp/window/cwindow.cpp +++ b/src/eepp/window/cwindow.cpp @@ -52,7 +52,7 @@ const Uint32& cWindow::GetHeight() const { return mWindow.WindowConfig.Height; } -const eeSize& cWindow::GetDesktopResolution() const { +const eeSize& cWindow::GetDesktopResolution() { return mWindow.DesktopResolution; }