mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-21 05:09:34 -06:00
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:
@ -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);
|
||||
}
|
||||
|
Reference in New Issue
Block a user