Added code to support toggling between windowed and fullscreen mode for win32 platform.
This commit is contained in:
parent
c525407904
commit
b7a5970a3c
|
@ -190,26 +190,12 @@ Renderer &Renderer::getInstance(){
|
|||
void Renderer::reinitAll() {
|
||||
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
||||
|
||||
const Game *gamePtr = this->game;
|
||||
const MainMenu *menuPtr = this->menu;
|
||||
|
||||
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
||||
|
||||
//end();
|
||||
init();
|
||||
|
||||
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
||||
|
||||
if(gamePtr != NULL) {
|
||||
//endGame();
|
||||
initGame(gamePtr);
|
||||
}
|
||||
|
||||
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
||||
|
||||
if(menuPtr != NULL) {
|
||||
//endMenu();
|
||||
initMenu(menuPtr);
|
||||
//resources
|
||||
for(int i=0; i<rsCount; ++i){
|
||||
modelManager[i]->init();
|
||||
textureManager[i]->init(true);
|
||||
//particleManager[i]->init();
|
||||
fontManager[i]->init();
|
||||
}
|
||||
|
||||
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
||||
|
|
|
@ -210,9 +210,12 @@ void MainWindow::eventKeyDown(char key){
|
|||
if(keystate.mod & (KMOD_LALT | KMOD_RALT)) {
|
||||
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d] ALT-ENTER pressed\n",__FILE__,__FUNCTION__,__LINE__);
|
||||
|
||||
//Renderer &renderer= Renderer::getInstance();
|
||||
//renderer.reloadResources();
|
||||
//renderer.reinitAll();
|
||||
// This stupidity only required in win32.
|
||||
// We reload the textures so that
|
||||
#ifdef WIN32
|
||||
Renderer &renderer= Renderer::getInstance();
|
||||
renderer.reinitAll();
|
||||
#endif
|
||||
|
||||
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
||||
}
|
||||
|
|
|
@ -78,6 +78,8 @@ public:
|
|||
|
||||
virtual void init(Filter filter= fBilinear, int maxAnisotropy= 1)=0;
|
||||
virtual void end()=0;
|
||||
|
||||
virtual void reseInitState() { inited = false; }
|
||||
};
|
||||
|
||||
// =====================================================
|
||||
|
|
|
@ -38,13 +38,14 @@ protected:
|
|||
public:
|
||||
TextureManager();
|
||||
~TextureManager();
|
||||
void init();
|
||||
void init(bool forceInit=false);
|
||||
void end();
|
||||
|
||||
void setFilter(Texture::Filter textureFilter);
|
||||
void setMaxAnisotropy(int maxAnisotropy);
|
||||
void initTexture(Texture *texture);
|
||||
void endTexture(Texture **texture);
|
||||
void reinitTextures();
|
||||
|
||||
Texture *getTexture(const string &path);
|
||||
Texture1D *newTexture1D();
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
#include "texture_manager.h"
|
||||
|
||||
#include <cstdlib>
|
||||
#include <stdexcept>
|
||||
|
||||
#include "graphics_interface.h"
|
||||
#include "graphics_factory.h"
|
||||
|
@ -47,9 +48,16 @@ void TextureManager::endTexture(Texture **texture) {
|
|||
}
|
||||
}
|
||||
|
||||
void TextureManager::init(){
|
||||
void TextureManager::init(bool forceInit) {
|
||||
for(int i=0; i<textures.size(); ++i){
|
||||
textures[i]->init(textureFilter, maxAnisotropy);
|
||||
Texture *texture = textures[i];
|
||||
if(texture == NULL) {
|
||||
throw std::runtime_error("texture == NULL during init");
|
||||
}
|
||||
if(forceInit == true) {
|
||||
texture->reseInitState();
|
||||
}
|
||||
texture->init(textureFilter, maxAnisotropy);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -330,6 +330,9 @@ void Window::toggleFullscreen() {
|
|||
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s %d] Window::isFullScreen == false [%d]\n",__FILE__,__FUNCTION__,__LINE__,handle);
|
||||
ShowWindow(handle, SW_RESTORE);
|
||||
}
|
||||
|
||||
SDL_Surface *sf = SDL_GetVideoSurface();
|
||||
SDL_SetVideoMode(0, 0, 0, sf->flags ^SDL_FULLSCREEN);
|
||||
|
||||
#else
|
||||
SDL_WM_ToggleFullScreen(SDL_GetVideoSurface());
|
||||
|
|
Loading…
Reference in New Issue