Kill not working sdl backend
remove some wxgl code
change defined a bit so resolution detection can be done right with wxgl 
and X11


git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@4239 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
nakeee 2009-09-09 20:47:11 +00:00
parent bc6323ea0e
commit e0dfe17ca4
7 changed files with 25 additions and 205 deletions

View File

@ -107,7 +107,6 @@ vars.AddVariables(
BoolVariable('lint', 'Set for lint build (extra warnings)', False), BoolVariable('lint', 'Set for lint build (extra warnings)', False),
BoolVariable('nowx', 'Set For Building with no WX libs (WIP)', False), BoolVariable('nowx', 'Set For Building with no WX libs (WIP)', False),
BoolVariable('wxgl', 'Set For Building with WX GL libs (WIP)', False), BoolVariable('wxgl', 'Set For Building with WX GL libs (WIP)', False),
BoolVariable('sdlgl', 'Set For Building with SDL GL libs (WIP)', False),
BoolVariable('jittest', 'temp don\'t use (WIP)', False), BoolVariable('jittest', 'temp don\'t use (WIP)', False),
BoolVariable('nojit', 'Remove entire jit cores', False), BoolVariable('nojit', 'Remove entire jit cores', False),
EnumVariable('flavor', 'Choose a build flavor', 'release', EnumVariable('flavor', 'Choose a build flavor', 'release',
@ -280,8 +279,6 @@ env['USE_WX'] = 0
if env['wxgl']: if env['wxgl']:
wxmods.append('gl') wxmods.append('gl')
env['USE_WX'] = 1 env['USE_WX'] = 1
env['HAVE_X11'] = 0
env['HAVE_COCOA'] = 0
if sys.platform == 'win32': if sys.platform == 'win32':
env['HAVE_WX'] = 1 env['HAVE_WX'] = 1
@ -293,15 +290,6 @@ if env['nowx']:
else: else:
env['HAVE_WX'] = conf.CheckWXConfig('2.8', wxmods, 0) env['HAVE_WX'] = conf.CheckWXConfig('2.8', wxmods, 0)
# SDL backend
env['USE_SDL'] = 0
if env['sdlgl']:
env['USE_SDL'] = 1
env['HAVE_X11'] = 0
env['HAVE_COCOA'] = 0
env['USE_WX'] = 0
env['JITTEST'] = 0 env['JITTEST'] = 0
if env['jittest']: if env['jittest']:
env['JITTEST'] = 1 env['JITTEST'] = 1
@ -315,7 +303,6 @@ conf.Define('NOJIT', env['NOJIT'])
# Creating config.h defines # Creating config.h defines
conf.Define('HAVE_SDL', env['HAVE_SDL']) conf.Define('HAVE_SDL', env['HAVE_SDL'])
conf.Define('USE_SDL', env['USE_SDL'])
conf.Define('HAVE_BLUEZ', env['HAVE_BLUEZ']) conf.Define('HAVE_BLUEZ', env['HAVE_BLUEZ'])
conf.Define('HAVE_AO', env['HAVE_AO']) conf.Define('HAVE_AO', env['HAVE_AO'])
conf.Define('HAVE_OPENAL', env['HAVE_OPENAL']) conf.Define('HAVE_OPENAL', env['HAVE_OPENAL'])

View File

@ -53,14 +53,13 @@ extern HINSTANCE g_hInstance;
void OpenGL_SwapBuffers() void OpenGL_SwapBuffers()
{ {
#if USE_SDL #if defined(USE_WX) && USE_WX
SDL_GL_SwapBuffers(); GLWin.glCanvas->SwapBuffers();
#elif defined(HAVE_COCOA) && HAVE_COCOA #elif defined(HAVE_COCOA) && HAVE_COCOA
cocoaGLSwap(GLWin.cocoaCtx,GLWin.cocoaWin); cocoaGLSwap(GLWin.cocoaCtx,GLWin.cocoaWin);
#elif defined(_WIN32) #elif defined(_WIN32)
SwapBuffers(hDC); SwapBuffers(hDC);
#elif defined(USE_WX) && USE_WX
GLWin.glCanvas->SwapBuffers();
#elif defined(HAVE_X11) && HAVE_X11 #elif defined(HAVE_X11) && HAVE_X11
glXSwapBuffers(GLWin.dpy, GLWin.win); glXSwapBuffers(GLWin.dpy, GLWin.win);
#endif #endif
@ -78,15 +77,13 @@ u32 OpenGL_GetBackbufferHeight()
void OpenGL_SetWindowText(const char *text) void OpenGL_SetWindowText(const char *text)
{ {
#if USE_SDL #if defined(USE_WX) && USE_WX
SDL_WM_SetCaption(text, NULL); GLWin.frame->SetTitle(wxString::FromAscii(text));
#elif defined(HAVE_COCOA) && HAVE_COCOA #elif defined(HAVE_COCOA) && HAVE_COCOA
cocoaGLSetTitle(GLWin.cocoaWin, text); cocoaGLSetTitle(GLWin.cocoaWin, text);
#elif defined(_WIN32) #elif defined(_WIN32)
// TODO convert text to unicode and change SetWindowTextA to SetWindowText // TODO convert text to unicode and change SetWindowTextA to SetWindowText
SetWindowTextA(EmuWindow::GetWnd(), text); SetWindowTextA(EmuWindow::GetWnd(), text);
#elif defined(USE_WX) && USE_WX
GLWin.frame->SetTitle(wxString::FromAscii(text));
#elif defined(HAVE_X11) && HAVE_X11 // GLX #elif defined(HAVE_X11) && HAVE_X11 // GLX
/** /**
* Tell X to ask the window manager to set the window title. (X * Tell X to ask the window manager to set the window title. (X
@ -96,9 +93,7 @@ void OpenGL_SetWindowText(const char *text)
#endif #endif
} }
// =======================================================================================
// Draw messages on top of the screen // Draw messages on top of the screen
// ------------------
unsigned int Callback_PeekMessages() unsigned int Callback_PeekMessages()
{ {
#ifdef _WIN32 #ifdef _WIN32
@ -168,22 +163,7 @@ bool OpenGL_Create(SVideoInitialize &_VideoInitialize, int _iwidth, int _iheight
g_VideoInitialize.pPeekMessages = &Callback_PeekMessages; g_VideoInitialize.pPeekMessages = &Callback_PeekMessages;
g_VideoInitialize.pUpdateFPSDisplay = &UpdateFPSDisplay; g_VideoInitialize.pUpdateFPSDisplay = &UpdateFPSDisplay;
#if USE_SDL #if defined(USE_WX) && USE_WX
//init sdl video
if (SDL_Init(SDL_INIT_VIDEO) < 0) {
//TODO : Display an error message
SDL_Quit();
return false;
}
//setup ogl to use double buffering
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
#elif defined(HAVE_COCOA) && HAVE_COCOA
GLWin.width = s_backbuffer_width;
GLWin.height = s_backbuffer_height;
GLWin.cocoaWin = cocoaGLCreateWindow(GLWin.width, GLWin.height);
GLWin.cocoaCtx = cocoaGLInit(g_Config.iMultisampleMode);
#elif defined(USE_WX) && USE_WX
int args[] = {WX_GL_RGBA, WX_GL_DOUBLEBUFFER, WX_GL_DEPTH_SIZE, 16, 0}; int args[] = {WX_GL_RGBA, WX_GL_DOUBLEBUFFER, WX_GL_DEPTH_SIZE, 16, 0};
wxSize size(_iwidth, _iheight); wxSize size(_iwidth, _iheight);
@ -196,23 +176,19 @@ bool OpenGL_Create(SVideoInitialize &_VideoInitialize, int _iwidth, int _iheight
-1, _("Dolphin"), wxPoint(50,50), size); -1, _("Dolphin"), wxPoint(50,50), size);
} }
#if defined(__APPLE__)
GLWin.glCanvas = new wxGLCanvas(GLWin.frame, wxID_ANY, wxPoint(0,0), size, 0, wxT("Dolphin"), args, wxNullPalette);
#else
GLWin.glCanvas = new wxGLCanvas(GLWin.frame, wxID_ANY, args, GLWin.glCanvas = new wxGLCanvas(GLWin.frame, wxID_ANY, args,
wxPoint(0,0), size, wxSUNKEN_BORDER); wxPoint(0,0), size, wxSUNKEN_BORDER);
GLWin.glCtxt = new wxGLContext(GLWin.glCanvas); GLWin.glCtxt = new wxGLContext(GLWin.glCanvas);
#endif
GLWin.frame->Show(TRUE); GLWin.frame->Show(TRUE);
GLWin.glCanvas->Show(TRUE); GLWin.glCanvas->Show(TRUE);
#if defined(__APPLE__)
GLWin.glCanvas->SetCurrent();
#else
GLWin.glCanvas->SetCurrent(*GLWin.glCtxt); GLWin.glCanvas->SetCurrent(*GLWin.glCtxt);
#endif
#elif defined(HAVE_COCOA) && HAVE_COCOA
GLWin.width = s_backbuffer_width;
GLWin.height = s_backbuffer_height;
GLWin.cocoaWin = cocoaGLCreateWindow(GLWin.width, GLWin.height);
GLWin.cocoaCtx = cocoaGLInit(g_Config.iMultisampleMode);
#elif defined(_WIN32) #elif defined(_WIN32)
// Create rendering window in Windows // Create rendering window in Windows
@ -471,36 +447,8 @@ bool OpenGL_Create(SVideoInitialize &_VideoInitialize, int _iwidth, int _iheight
bool OpenGL_MakeCurrent() bool OpenGL_MakeCurrent()
{ {
#if USE_SDL #if defined(USE_WX) && USE_WX
// Note: The reason for having the call to SDL_SetVideoMode in here instead GLWin.glCanvas->SetCurrent(*GLWin.glCtxt);
// 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) {
// TODO: Display an error message.
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?
int _twidth = s_backbuffer_width;
int _theight = s_backbuffer_height;
SDL_Surface *screen = SDL_SetVideoMode(_twidth, _theight, 0, videoFlags);
if (!screen) {
//TODO : Display an error message
SDL_Quit();
return false;
}
#elif defined(HAVE_COCOA) && HAVE_COCOA #elif defined(HAVE_COCOA) && HAVE_COCOA
cocoaGLMakeCurrent(GLWin.cocoaCtx,GLWin.cocoaWin); cocoaGLMakeCurrent(GLWin.cocoaCtx,GLWin.cocoaWin);
#elif defined(_WIN32) #elif defined(_WIN32)
@ -508,13 +456,6 @@ bool OpenGL_MakeCurrent()
PanicAlert("(5) Can't Activate The GL Rendering Context."); PanicAlert("(5) Can't Activate The GL Rendering Context.");
return false; return false;
} }
#elif defined(USE_WX) && USE_WX
#if defined(__APPLE__)
GLWin.glCanvas->SetCurrent();
#else
GLWin.glCanvas->SetCurrent(*GLWin.glCtxt);
#endif
return true;
#elif defined(HAVE_X11) && HAVE_X11 #elif defined(HAVE_X11) && HAVE_X11
Window winDummy; Window winDummy;
unsigned int borderDummy; unsigned int borderDummy;
@ -537,33 +478,21 @@ bool OpenGL_MakeCurrent()
} }
// =======================================================================================
// Update window width, size and etc. Called from Render.cpp // Update window width, size and etc. Called from Render.cpp
// ----------------
void OpenGL_Update() void OpenGL_Update()
{ {
#if USE_SDL #if defined(USE_WX) && USE_WX
SDL_Surface *surface = SDL_GetVideoSurface();
RECT rcWindow = {0}; RECT rcWindow = {0};
if (!surface) rcWindow.right = GLWin.width;
return; rcWindow.bottom = GLWin.height;
s_backbuffer_width = surface->w;
s_backbuffer_height = surface->h;
rcWindow.right = surface->w; // TODO fill in
rcWindow.bottom = surface->h;
#elif defined(HAVE_COCOA) && HAVE_COCOA #elif defined(HAVE_COCOA) && HAVE_COCOA
RECT rcWindow = {0}; RECT rcWindow = {0};
rcWindow.right = GLWin.width; rcWindow.right = GLWin.width;
rcWindow.bottom = GLWin.height; rcWindow.bottom = GLWin.height;
#elif defined(USE_WX) && USE_WX
RECT rcWindow = {0};
rcWindow.right = GLWin.width;
rcWindow.bottom = GLWin.height;
// TODO fill in
#elif defined(_WIN32) #elif defined(_WIN32)
RECT rcWindow; RECT rcWindow;
if (!EmuWindow::GetParentWnd()) if (!EmuWindow::GetParentWnd())
@ -664,18 +593,15 @@ void OpenGL_Update()
} }
// =======================================================================================
// Close plugin // Close plugin
// ----------------
void OpenGL_Shutdown() void OpenGL_Shutdown()
{ {
#if USE_SDL #if defined(USE_WX) && USE_WX
SDL_Quit();
#elif defined(HAVE_COCOA) && HAVE_COCOA
cocoaGLDelete(GLWin.cocoaCtx);
#elif defined(USE_WX) && USE_WX
delete GLWin.glCanvas; delete GLWin.glCanvas;
delete GLWin.frame; delete GLWin.frame;
#elif defined(HAVE_COCOA) && HAVE_COCOA
cocoaGLDelete(GLWin.cocoaCtx);
#elif defined(_WIN32) #elif defined(_WIN32)
if (hRC) // Do We Have A Rendering Context? if (hRC) // Do We Have A Rendering Context?
{ {

View File

@ -37,7 +37,6 @@
#include <GL/glew.h> #include <GL/glew.h>
#include "wx/wx.h" #include "wx/wx.h"
#include "wx/glcanvas.h" #include "wx/glcanvas.h"
#undef HAVE_X11
#elif defined(HAVE_X11) && HAVE_X11 #elif defined(HAVE_X11) && HAVE_X11
#define I_NEED_OS2_H // HAXXOR #define I_NEED_OS2_H // HAXXOR
#include <GL/glxew.h> #include <GL/glxew.h>

View File

@ -260,7 +260,9 @@ bool Renderer::Init()
return false; return false;
// Handle VSync on/off // Handle VSync on/off
#ifdef _WIN32 #if defined USE_WX && USE_WX
// TODO: FILL IN
#elif defined _WIN32
if (WGLEW_EXT_swap_control) if (WGLEW_EXT_swap_control)
wglSwapIntervalEXT(g_Config.bVSync ? 1 : 0); wglSwapIntervalEXT(g_Config.bVSync ? 1 : 0);
else else

View File

@ -109,10 +109,6 @@ if gfxenv['USE_WX'] and not gfxenv['HAVE_WX']:
print "Must have wx to use wxgl" print "Must have wx to use wxgl"
Return() Return()
if gfxenv['USE_SDL'] and not gfxenv['HAVE_SDL']:
print "Must have sdl to use SDL gl"
Return()
gfxenv.Append( gfxenv.Append(
CXXFLAGS = compileFlags, CXXFLAGS = compileFlags,
LINKFLAGS = linkFlags, LINKFLAGS = linkFlags,

View File

@ -1,54 +0,0 @@
#include "WXGLWindow.h"
void WXGLWindow::SwapBuffers() {
glCanvas->SwapBuffers();
}
void WXGLWindow::SetWindowText(const char *text) {
frame->SetTitle(wxString::FromAscii(text));
}
bool WXGLWindow::PeekMessages() {
// TODO implmenent
return false;
}
void WXGLWindow::Update() {
updateDim();
}
bool WXGLWindow::MakeCurrent() {
glCanvas->SetCurrent(*glCtxt);
return true;
}
WXGLWindow::~WXGLWindow() {
delete glCanvas;
delete frame;
}
WXGLWindow::WXGLWindow() : GLWindow() {
updateDim();
int args[] = {WX_GL_RGBA, WX_GL_DOUBLEBUFFER, WX_GL_DEPTH_SIZE, 16, 0};
wxSize size(GetWidth(), GetHeight());
if (!g_Config.renderToMainframe ||
g_VideoInitialize.pWindowHandle == NULL) {
frame = new wxFrame((wxWindow *)g_VideoInitialize.pWindowHandle,
-1, _("Dolphin"), wxPoint(0,0), size);
} else {
frame = new wxFrame((wxWindow *)NULL,
-1, _("Dolphin"), wxPoint(0,0), size);
}
glCanvas = new wxGLCanvas(frame, wxID_ANY, args,
wxPoint(0,0), size, wxSUNKEN_BORDER);
glCtxt = new wxGLContext(glCanvas);
frame->Show(TRUE);
glCanvas->Show(TRUE);
glCanvas->SetCurrent(*glCtxt);
}

View File

@ -1,36 +0,0 @@
#ifndef _WXGLWINDOW_H
#define _WXGLWINDOW_H
#include "GLWindow.h"
#if defined USE_WX && USE_WX
#include "wx/wx.h"
#include "wx/glcanvas.h"
class WXGLWindow : public GLWindow
{
private:
wxGLCanvas *glCanvas;
wxFrame *frame;
wxGLContext *glCtxt;
public:
virtual void SwapBuffers();
virtual void SetWindowText(const char *text);
virtual bool PeekMessages();
virtual void Update();
virtual bool MakeCurrent();
static bool valid() { return true; }
~WXGLWindow();
WXGLWindow();
};
#else
class WXGLWindow : public GLWindow
{
public:
WXGLWindow() {}
};
#endif
#endif