dolphin/Source/Plugins/Plugin_VideoOGL/Src/SDLWindow.cpp
XTra.KrazzY cd658ac755 More WIP OGL EventHandler work by shuffle2 and myself. Wiimote isn't implemented yet and OGL window is too small (should take window borders into account when creating window).
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
2009-01-29 23:35:31 +00:00

77 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);
}