forked from dolphin-emu/dolphin
		
	Not committing VideoOGL.vcproj so that project compiles with old OGL video window. In order to test just replace main.cpp/GLUtil.cpp/GLUtil.h with nmain.cpp/nGLUtil.cpp/nGLUtil.h in the project. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@2038 8ced0084-cf51-0410-be5f-012b33b47a6e
		
			
				
	
	
		
			78 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			78 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#include "SDLWindow.h"
 | 
						|
 | 
						|
void SDLWindow::SwapBuffers() {
 | 
						|
	SDL_GL_SwapBuffers();
 | 
						|
}
 | 
						|
 | 
						|
void SDLWindow::SetWindowText(const char *text) {
 | 
						|
	SDL_WM_SetCaption(text, NULL);
 | 
						|
}
 | 
						|
 | 
						|
bool SDLWindow::PeekMessages() {
 | 
						|
	// TODO implement
 | 
						|
	return false;
 | 
						|
}
 | 
						|
 | 
						|
void SDLWindow::Update() {
 | 
						|
 | 
						|
	SDL_Surface *surface = SDL_GetVideoSurface();
 | 
						|
	if (!surface) {
 | 
						|
		PanicAlert("Can't get surface to update");
 | 
						|
		return;
 | 
						|
	}
 | 
						|
 | 
						|
	//SetSize(surface->w, surface->h);
 | 
						|
	updateDim();
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
bool SDLWindow::MakeCurrent() {
 | 
						|
	/* Note: The reason for having the call to SDL_SetVideoMode in here instead
 | 
						|
	of in OpenGL_Create() is that "make current" is part of the video
 | 
						|
	mode setting and is not available as a separate call in SDL. We
 | 
						|
	have to do "make current" here because this method runs in the CPU
 | 
						|
	thread while OpenGL_Create() runs in a diferent thread and "make
 | 
						|
	current" has to be done in the same thread that will be making
 | 
						|
	calls to OpenGL. */
 | 
						|
 | 
						|
	// Fetch video info.
 | 
						|
	const SDL_VideoInfo *videoInfo = SDL_GetVideoInfo();
 | 
						|
	if (!videoInfo) {
 | 
						|
		PanicAlert("Couldn't get video info");
 | 
						|
		SDL_Quit();
 | 
						|
		return false;
 | 
						|
	}
 | 
						|
	// Compute video mode flags.
 | 
						|
	const int videoFlags = SDL_OPENGL
 | 
						|
		| ( videoInfo->hw_available ? SDL_HWSURFACE : SDL_SWSURFACE )
 | 
						|
		| ( g_Config.bFullscreen ? SDL_FULLSCREEN : 0);
 | 
						|
	// Set vide mode.
 | 
						|
	// TODO: Can we use this field or is a separate field needed?
 | 
						|
	SDL_Surface *screen = SDL_SetVideoMode(GetXwin(), GetYwin(), 
 | 
						|
		0, videoFlags);
 | 
						|
	if (!screen) {
 | 
						|
		PanicAlert("Couldn't set video mode");
 | 
						|
		SDL_Quit();
 | 
						|
		return false;
 | 
						|
	}
 | 
						|
 | 
						|
	return true;
 | 
						|
}
 | 
						|
 | 
						|
SDLWindow::~SDLWindow() {
 | 
						|
	SDL_Quit();
 | 
						|
}
 | 
						|
 | 
						|
SDLWindow::SDLWindow() : GLWindow() {
 | 
						|
 | 
						|
	//init sdl video
 | 
						|
	if (SDL_Init(SDL_INIT_VIDEO) < 0) {
 | 
						|
		PanicAlert("Failed to init SDL: %s", SDL_GetError());
 | 
						|
		SDL_Quit();
 | 
						|
		//return NULL;
 | 
						|
	}
 | 
						|
 | 
						|
	// Setup ogl to use double buffering
 | 
						|
	SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
 | 
						|
}
 |