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
This commit is contained in:
XTra.KrazzY
2009-01-29 23:35:31 +00:00
parent d3677a0247
commit cd658ac755
21 changed files with 1158 additions and 650 deletions

View File

@ -1,77 +1,77 @@
#include "SDLWindow.h"
void SDLWindow::SwapBuffers() {
SDL_GL_SwapBuffers();
SDL_GL_SwapBuffers();
}
void SDLWindow::SetWindowText(const char *text) {
SDL_WM_SetCaption(text, NULL);
SDL_WM_SetCaption(text, NULL);
}
bool SDLWindow::PeekMessages() {
// TODO implement
return false;
// TODO implement
return false;
}
void SDLWindow::Update() {
SDL_Surface *surface = SDL_GetVideoSurface();
if (!surface) {
PanicAlert("Can't ge t surface to update");
return;
}
// SetSize(surface->w, surface->h);
updateDim();
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;
}
/* 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. */
return true;
// 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();
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);
//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);
}