Handle resize better
This commit is contained in:
@@ -18,6 +18,17 @@ namespace lime {
|
||||
|
||||
SDL_Init (SDL_INIT_VIDEO | SDL_INIT_TIMER);
|
||||
|
||||
currentUpdate = 0;
|
||||
lastUpdate = 0;
|
||||
nextUpdate = 0;
|
||||
|
||||
KeyEvent keyEvent;
|
||||
MouseEvent mouseEvent;
|
||||
RenderEvent renderEvent;
|
||||
TouchEvent touchEvent;
|
||||
UpdateEvent updateEvent;
|
||||
WindowEvent windowEvent;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -162,7 +173,6 @@ namespace lime {
|
||||
|
||||
case SDL_WINDOWEVENT_SHOWN:
|
||||
case SDL_WINDOWEVENT_HIDDEN:
|
||||
case SDL_WINDOWEVENT_SIZE_CHANGED:
|
||||
case SDL_WINDOWEVENT_FOCUS_GAINED:
|
||||
case SDL_WINDOWEVENT_FOCUS_LOST:
|
||||
case SDL_WINDOWEVENT_MOVED:
|
||||
@@ -175,6 +185,12 @@ namespace lime {
|
||||
RenderEvent::Dispatch (&renderEvent);
|
||||
break;
|
||||
|
||||
case SDL_WINDOWEVENT_SIZE_CHANGED:
|
||||
|
||||
ProcessWindowEvent (event);
|
||||
RenderEvent::Dispatch (&renderEvent);
|
||||
break;
|
||||
|
||||
case SDL_WINDOWEVENT_CLOSE:
|
||||
|
||||
ProcessWindowEvent (event);
|
||||
|
||||
@@ -11,40 +11,26 @@ namespace lime {
|
||||
currentWindow = window;
|
||||
sdlWindow = ((SDLWindow*)window)->sdlWindow;
|
||||
|
||||
if (OpenGLBindings::Init ()) {
|
||||
int sdlFlags = SDL_RENDERER_ACCELERATED;
|
||||
|
||||
if (window->flags & WINDOW_FLAG_VSYNC) sdlFlags |= SDL_RENDERER_PRESENTVSYNC;
|
||||
|
||||
if (window->flags & WINDOW_FLAG_DEPTH_BUFFER) {
|
||||
|
||||
SDL_GLContext context = SDL_GL_CreateContext (sdlWindow);
|
||||
|
||||
if (context) {
|
||||
|
||||
if (window->flags & WINDOW_FLAG_VSYNC) {
|
||||
|
||||
SDL_GL_SetSwapInterval (1);
|
||||
|
||||
} else {
|
||||
|
||||
SDL_GL_SetSwapInterval (0);
|
||||
|
||||
}
|
||||
|
||||
if (window->flags & WINDOW_FLAG_DEPTH_BUFFER) {
|
||||
|
||||
SDL_GL_SetAttribute (SDL_GL_DEPTH_SIZE, 32 - (window->flags & WINDOW_FLAG_STENCIL_BUFFER) ? 8 : 0);
|
||||
|
||||
}
|
||||
|
||||
if (window->flags & WINDOW_FLAG_STENCIL_BUFFER) {
|
||||
|
||||
SDL_GL_SetAttribute (SDL_GL_STENCIL_SIZE, 8);
|
||||
|
||||
}
|
||||
|
||||
SDL_GL_MakeCurrent (sdlWindow, context);
|
||||
|
||||
}
|
||||
SDL_GL_SetAttribute (SDL_GL_DEPTH_SIZE, 32 - (window->flags & WINDOW_FLAG_STENCIL_BUFFER) ? 8 : 0);
|
||||
|
||||
}
|
||||
|
||||
if (window->flags & WINDOW_FLAG_STENCIL_BUFFER) {
|
||||
|
||||
SDL_GL_SetAttribute (SDL_GL_STENCIL_SIZE, 8);
|
||||
|
||||
}
|
||||
|
||||
sdlRenderer = SDL_CreateRenderer (sdlWindow, -1, sdlFlags);
|
||||
|
||||
OpenGLBindings::Init ();
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -57,7 +43,7 @@ namespace lime {
|
||||
|
||||
void SDLRenderer::Flip () {
|
||||
|
||||
SDL_GL_SwapWindow (sdlWindow);
|
||||
SDL_RenderPresent (sdlRenderer);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@ namespace lime {
|
||||
|
||||
virtual void Flip ();
|
||||
|
||||
SDL_Renderer* sdlRenderer;
|
||||
SDL_Window* sdlWindow;
|
||||
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user