Browse Source

Merge pull request #1755 from Areloch/SDLSplashWindow

Implements the splash screen window to the SDL platform stuff.
Areloch 9 years ago
parent
commit
26241020ff

+ 30 - 0
Engine/source/windowManager/sdl/sdlSplashScreen.cpp

@@ -23,12 +23,42 @@
 #include "platform/platform.h"
 #include "console/console.h"
 
+#include "SDL.h"
+#include "windowManager/sdl/sdlWindow.h"
+
+static SDL_Window* gSplashWindow = nullptr;
+static SDL_Surface* gSplashImage = nullptr;
+static SDL_Texture* gSplashTexture = nullptr;
+static SDL_Renderer* gSplashRenderer = nullptr;
+
 bool Platform::displaySplashWindow( String path )
 {
    if(path.isEmpty())
       return false;
 
+   gSplashImage = SDL_LoadBMP(path);
+
+   //now the pop-up window
+   gSplashWindow = SDL_CreateWindow("", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 
+      gSplashImage->w, gSplashImage->h, SDL_WINDOW_BORDERLESS | SDL_WINDOW_SHOWN);
+
+   gSplashRenderer = SDL_CreateRenderer(gSplashWindow, -1, SDL_RENDERER_ACCELERATED);
+
+   gSplashTexture = SDL_CreateTextureFromSurface(gSplashRenderer, gSplashImage);
+
+   SDL_RenderCopy(gSplashRenderer, gSplashTexture, NULL, NULL);
+
+   SDL_RenderPresent(gSplashRenderer);
+
 	return true;
 }
 
+bool Platform::closeSplashWindow()
+{
+   SDL_DestroyTexture(gSplashTexture);
+   SDL_FreeSurface(gSplashImage);
+   SDL_DestroyRenderer(gSplashRenderer);
+   SDL_DestroyWindow(gSplashWindow);
 
+   return true;
+}

+ 1 - 6
Engine/source/windowManager/sdl/sdlWindowMgr.cpp

@@ -153,7 +153,7 @@ PlatformWindow *PlatformWindowManagerSDL::createWindow(GFXDevice *device, const
 {
    // Do the allocation.
    PlatformWindowSDL *window = new PlatformWindowSDL();   
-   U32 windowFlags = /*SDL_WINDOW_SHOWN |*/ SDL_WINDOW_RESIZABLE;
+   U32 windowFlags = /*SDL_WINDOW_SHOWN |*/ SDL_WINDOW_RESIZABLE | SDL_WINDOW_HIDDEN;
 
    if(GFX->getAdapterType() == OpenGL)
        windowFlags |= SDL_WINDOW_OPENGL;
@@ -343,11 +343,6 @@ void PlatformWindowManagerSDL::raiseCurtain()
    // TODO SDL
 }
 
-bool Platform::closeSplashWindow()
-{
-    return true;
-}
-
 void Platform::openFolder(const char* path )
 {
     AssertFatal(0, "Not Implemented");