summaryrefslogtreecommitdiff
path: root/Source/Plugins/Plugin_VideoOGL
diff options
context:
space:
mode:
authorGlenn Rice <glennricster@gmail.com>2010-07-16 21:56:40 +0000
committerGlenn Rice <glennricster@gmail.com>2010-07-16 21:56:40 +0000
commit25efe443eae400a216fb4e2e1695446e344a4001 (patch)
treea9f8ecc7979afd50b6b99af8d717584d582cb5ab /Source/Plugins/Plugin_VideoOGL
parentaa88d8b790c8fcc8cf0a4e6f7497a3b36eb129c1 (diff)
Fix an issue that made it so that the emulator could not be resized in the nowx build on linux. Also some code cleanup in the OpenGL and Software plugins.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@5889 8ced0084-cf51-0410-be5f-012b33b47a6e
Diffstat (limited to 'Source/Plugins/Plugin_VideoOGL')
-rw-r--r--Source/Plugins/Plugin_VideoOGL/Src/GLUtil.cpp56
-rw-r--r--Source/Plugins/Plugin_VideoOGL/Src/GLUtil.h15
-rw-r--r--Source/Plugins/Plugin_VideoOGL/Src/SConscript31
3 files changed, 33 insertions, 69 deletions
diff --git a/Source/Plugins/Plugin_VideoOGL/Src/GLUtil.cpp b/Source/Plugins/Plugin_VideoOGL/Src/GLUtil.cpp
index 82ee13710a..0656aa5a10 100644
--- a/Source/Plugins/Plugin_VideoOGL/Src/GLUtil.cpp
+++ b/Source/Plugins/Plugin_VideoOGL/Src/GLUtil.cpp
@@ -22,34 +22,23 @@
#include "Render.h"
+#include "GLUtil.h"
+
#if defined(_WIN32)
#include "OS/Win32.h"
+static HDC hDC = NULL; // Private GDI Device Context
+static HGLRC hRC = NULL; // Permanent Rendering Context
+extern HINSTANCE g_hInstance;
#else
-struct RECT
-{
- int left, top;
- int right, bottom;
-};
+GLWindow GLWin;
#endif
-#include "GLUtil.h"
-
// Handles OpenGL and the window
// Window dimensions.
static int s_backbuffer_width;
static int s_backbuffer_height;
-#ifndef _WIN32
-GLWindow GLWin;
-#endif
-
-#if defined(_WIN32)
-static HDC hDC = NULL; // Private GDI Device Context
-static HGLRC hRC = NULL; // Permanent Rendering Context
-extern HINSTANCE g_hInstance;
-#endif
-
void OpenGL_SwapBuffers()
{
#if defined(USE_WX) && USE_WX
@@ -76,15 +65,15 @@ u32 OpenGL_GetBackbufferHeight()
void OpenGL_SetWindowText(const char *text)
{
#if defined(USE_WX) && USE_WX
-// GLWin.frame->SetTitle(wxString::FromAscii(text));
+ // GLWin.frame->SetTitle(wxString::FromAscii(text));
#elif defined(__APPLE__)
cocoaGLSetTitle(GLWin.cocoaWin, text);
#elif defined(_WIN32)
// TODO convert text to unicode and change SetWindowTextA to SetWindowText
SetWindowTextA(EmuWindow::GetWnd(), text);
-#elif defined(HAVE_X11) && HAVE_X11 // GLX
- // Tell X to ask the window manager to set the window title. (X
- // itself doesn't provide window title functionality.)
+#elif defined(HAVE_X11) && HAVE_X11
+ // Tell X to ask the window manager to set the window title.
+ // (X itself doesn't provide window title functionality.)
XStoreName(GLWin.dpy, GLWin.win, text);
#endif
}
@@ -127,8 +116,7 @@ void CreateXWindow (void)
GLWin.attr.colormap = XCreateColormap(GLWin.dpy,
GLWin.parent, GLWin.vi->visual, AllocNone);
GLWin.attr.event_mask = ExposureMask | KeyPressMask | KeyReleaseMask |
- StructureNotifyMask | ResizeRedirectMask | EnterWindowMask |
- LeaveWindowMask | FocusChangeMask;
+ StructureNotifyMask | EnterWindowMask | LeaveWindowMask | FocusChangeMask;
GLWin.attr.background_pixel = BlackPixel(GLWin.dpy, GLWin.screen);
GLWin.attr.border_pixel = 0;
@@ -147,7 +135,6 @@ void CreateXWindow (void)
void DestroyXWindow(void)
{
- /* switch back to original desktop resolution if we were in fullscreen */
XUnmapWindow(GLWin.dpy, GLWin.win);
GLWin.win = 0;
XFreeColormap(GLWin.dpy, GLWin.attr.colormap);
@@ -366,7 +353,7 @@ bool OpenGL_Create(SVideoInitialize &_VideoInitialize, int _iwidth, int _iheight
glXQueryVersion(GLWin.dpy, &glxMajorVersion, &glxMinorVersion);
NOTICE_LOG(VIDEO, "glX-Version %d.%d", glxMajorVersion, glxMinorVersion);
- /* get an appropriate visual */
+ // Get an appropriate visual
GLWin.vi = glXChooseVisual(GLWin.dpy, GLWin.screen, attrListDbl);
if (GLWin.vi == NULL)
{
@@ -428,16 +415,12 @@ bool OpenGL_MakeCurrent()
void OpenGL_Update()
{
#if defined(USE_WX) && USE_WX
- RECT rcWindow = {0};
- rcWindow.right = GLWin.width;
- rcWindow.bottom = GLWin.height;
-
- // TODO fill in
-
+ GLWin.glCanvas->GetSize((int *)&GLWin.width, (int *)&GLWin.height);
+ s_backbuffer_width = GLWin.width;
+ s_backbuffer_height = GLWin.height;
#elif defined(__APPLE__)
- RECT rcWindow = {0};
- rcWindow.right = GLWin.width;
- rcWindow.bottom = GLWin.height;
+
+ // Is anything needed here?
#elif defined(_WIN32)
RECT rcWindow;
@@ -452,11 +435,8 @@ void OpenGL_Update()
GetWindowRect(EmuWindow::GetParentWnd(), &rcWindow);
}
- // ---------------------------------------------------------------------------------------
// Get the new window width and height
- // ------------------
// See below for documentation
- // ------------------
int width = rcWindow.right - rcWindow.left;
int height = rcWindow.bottom - rcWindow.top;
@@ -467,8 +447,6 @@ void OpenGL_Update()
s_backbuffer_width = width;
s_backbuffer_height = height;
}
-
-#elif defined(HAVE_X11) && HAVE_X11
#endif
}
diff --git a/Source/Plugins/Plugin_VideoOGL/Src/GLUtil.h b/Source/Plugins/Plugin_VideoOGL/Src/GLUtil.h
index c5d1e3fc98..242bd3e8f6 100644
--- a/Source/Plugins/Plugin_VideoOGL/Src/GLUtil.h
+++ b/Source/Plugins/Plugin_VideoOGL/Src/GLUtil.h
@@ -71,11 +71,15 @@
#include <sys/types.h>
typedef struct {
- int screen;
-#if defined(__APPLE__)
+#if defined(USE_WX) && USE_WX
+ wxGLCanvas *glCanvas;
+ wxPanel *panel;
+ wxGLContext *glCtxt;
+#elif defined(__APPLE__)
NSWindow *cocoaWin;
NSOpenGLContext *cocoaCtx;
#elif defined(HAVE_X11) && HAVE_X11
+ int screen;
Window win;
Window parent;
Display *dpy;
@@ -83,13 +87,8 @@ typedef struct {
GLXContext ctx;
XSetWindowAttributes attr;
Common::Thread *xEventThread;
-#endif // X11
-#if defined(USE_WX) && USE_WX
- wxGLCanvas *glCanvas;
- wxPanel *panel;
- wxGLContext *glCtxt;
-#endif
int x, y;
+#endif
unsigned int width, height;
} GLWindow;
diff --git a/Source/Plugins/Plugin_VideoOGL/Src/SConscript b/Source/Plugins/Plugin_VideoOGL/Src/SConscript
index ec5a6316b7..5b7e811a9b 100644
--- a/Source/Plugins/Plugin_VideoOGL/Src/SConscript
+++ b/Source/Plugins/Plugin_VideoOGL/Src/SConscript
@@ -1,11 +1,7 @@
# -*- python -*-
Import('env')
-# can we import path in one place?
import sys
-sys.path.append(env['base_dir']+'SconsTests')
-import utils
-import platform
name = "Plugin_VideoOGL"
@@ -24,41 +20,32 @@ files = [
'XFB.cpp',
'PostProcessing.cpp',
'FramebufferManager.cpp',
+ 'main.cpp',
+ 'GLUtil.cpp'
]
-linkFlags = [
- ]
+
libs = [
'videocommon', 'GLEW', 'SOIL', 'common'
]
gfxenv = env.Clone()
-files += [
- 'main.cpp',
- 'GLUtil.cpp',
- ]
if sys.platform != 'darwin':
if gfxenv['HAVE_OPENCL']:
libs += [ 'OpenCL']
+
if gfxenv['HAVE_WX']:
files += [
- 'GUI/ConfigDlg.cpp',
+ 'GUI/ConfigDlg.cpp',
'Debugger/Debugger.cpp',
- ]
+ ]
if sys.platform == 'darwin':
- files += [ 'cocoaGL.m' ]
-
-if sys.platform == 'win32':
- files += [ 'OS/Win32.cpp' ]
+ files += [ 'cocoaGL.m' ]
if sys.platform == 'win32':
- files += [
- 'OS/Win32.cpp'
- ]
- libs += [
- env['base_dir'] + '/Externals/Cg/'
- ]
+ files += [ 'OS/Win32.cpp' ]
+ libs += [ env['base_dir'] + '/Externals/Cg/' ]
gfxenv['CPPPATH'] += libs
gfxenv.SharedLibrary(