diff --git a/SConstruct b/SConstruct
index 1d5e7138a1..6f9268ce5f 100644
--- a/SConstruct
+++ b/SConstruct
@@ -99,8 +99,8 @@ vars.AddVariables(
                  allowed_values = ('release', 'devel', 'debug'),
                  ignorecase = 2
                  ),
-    EnumVariable('osx', 'Choose a backend (WIP)', '32coca',
-                 allowed_values = ('32x11', '32coca', '64coca'),
+    EnumVariable('osx', 'Choose a backend (WIP)', '32cocoa',
+                 allowed_values = ('32x11', '32cocoa', '64cocoa'),
                  ignorecase = 2
                  ),
     PathVariable('wxconfig', 'Path to the wxconfig', None),
@@ -192,9 +192,9 @@ env['HAVE_WX'] = conf.CheckWXConfig('2.8', ['adv', 'core', 'base'],
 
 #osx 64 specifics
 if sys.platform == 'darwin':
-    if env['osx'] == '64coca':
+    if env['osx'] == '64cocoa':
         compileFlags += ['-arch' , 'x86_64', '-DOSX64']
-    if env['osx'] == '64coca' or env['osx'] == '32coca':
+    if not env['osx'] == '32x11':
         env['HAVE_X11'] = 0
         env['HAVE_COCOA'] = conf.CheckPKG('cocoa')
 else:
@@ -219,7 +219,6 @@ conf.Finish()
 #wx windows flags
 if env['HAVE_WX']:
     wxconfig.ParseWXConfig(env)
-    compileFlags += ['-DUSE_WX']
 else:
     print "WX not found or disabled, not building GUI"
 
diff --git a/Source/Plugins/Plugin_VideoOGL/Src/Config.h b/Source/Plugins/Plugin_VideoOGL/Src/Config.h
index d39e1e9907..1568634053 100644
--- a/Source/Plugins/Plugin_VideoOGL/Src/Config.h
+++ b/Source/Plugins/Plugin_VideoOGL/Src/Config.h
@@ -17,6 +17,7 @@
 
 #ifndef _CONFIG_H
 #define _CONFIG_H
+//#define USE_WX 1
 
 // Log in two categories, andsave three other options in the same byte
 #define CONF_LOG 1
diff --git a/Source/Plugins/Plugin_VideoOGL/Src/GLUtil.cpp b/Source/Plugins/Plugin_VideoOGL/Src/GLUtil.cpp
index dd74804a26..7eb1c65dee 100644
--- a/Source/Plugins/Plugin_VideoOGL/Src/GLUtil.cpp
+++ b/Source/Plugins/Plugin_VideoOGL/Src/GLUtil.cpp
@@ -41,6 +41,7 @@ struct RECT
 #include <SDL.h>
 #endif
 
+
 // Handles OpenGL and the window
 
 // externals
@@ -63,11 +64,13 @@ void OpenGL_SwapBuffers()
 {
 #if USE_SDL
     SDL_GL_SwapBuffers();
-#elif defined(OSX64)
+#elif defined(HAVE_COCOA) && HAVE_COCOA
     cocoaGLSwap(GLWin.cocoaCtx,GLWin.cocoaWin);
 #elif defined(_WIN32)
     SwapBuffers(hDC);
-#else // GLX
+#elif defined(USE_WX) && USE_WX
+    GLWin.Wxcs->SwapBuffers();
+#elif defined(HAVE_X11) && HAVE_X11
     glXSwapBuffers(GLWin.dpy, GLWin.win);
 #endif
 }
@@ -76,7 +79,7 @@ void OpenGL_SetWindowText(const char *text)
 {
 #if USE_SDL
     SDL_WM_SetCaption(text, NULL);
-#elif defined(OSX64)
+#elif defined(HAVE_COCOA) && HAVE_COCOA
     cocoaGLSetTitle();
 #elif defined(_WIN32)
     SetWindowText(EmuWindow::GetWnd(), text);
@@ -89,7 +92,7 @@ void OpenGL_SetWindowText(const char *text)
 #endif
 }
 
-unsigned int  Callback_PeekMessages()
+unsigned int Callback_PeekMessages()
 {
 #ifdef _WIN32
     //TODO: peekmessage
@@ -202,6 +205,17 @@ bool OpenGL_Create(SVideoInitialize &_VideoInitialize, int _iwidth, int _iheight
     GLWin.height = nBackbufferHeight;
     GLWin.cocoaWin = cocoaGLCreateWindow(GLWin.width, GLWin.height);
     GLWin.cocoaCtx = cocoaGLInit(g_Config.iMultisampleMode);
+#elif defined(USE_WX) && USE_WX
+    int attrib[2];
+    attrib[0] = WX_GL_DEPTH_SIZE;
+    attrib[1] = 32;
+    wxFrame *frame = new wxFrame((wxFrame *)NULL, -1,  _("Test frame"), wxPoint(50,50), wxSize(400,400) );
+    GLWin.Wxcs = new wxGLCanvas(frame, -1, wxPoint(0,0), wxSize(400,400), wxSUNKEN_BORDER, _("some text"));
+
+    frame->Show(TRUE);
+
+    GLWin.Wxcs->SetCurrent();
+
 #elif defined(_WIN32)
     // create the window
     if (!g_Config.renderToMainframe || g_VideoInitialize.pWindowHandle == NULL)
@@ -372,7 +386,7 @@ bool OpenGL_Create(SVideoInitialize &_VideoInitialize, int _iwidth, int _iheight
     GLWin.attr.colormap = cmap;
     GLWin.attr.border_pixel = 0;
 
-#ifndef __APPLE__
+#if defined(HAVE_XXF86VM) && HAVE_XXF86VM
     // get a connection
     XF86VidModeQueryVersion(GLWin.dpy, &vidModeMajorVersion, &vidModeMinorVersion);
 
@@ -482,14 +496,14 @@ bool OpenGL_MakeCurrent()
 		SDL_Quit();
 		return false;
 	}
-#elif defined(OSX64)
+#elif defined(HAVE_COCOA) && HAVE_COCOA
     cocoaGLMakeCurrent(GLWin.cocoaCtx,GLWin.cocoaWin);
 #elif defined(_WIN32)
     if (!wglMakeCurrent(hDC,hRC)) {
         MessageBox(NULL,"(5) Can't Activate The GL Rendering Context.","ERROR",MB_OK|MB_ICONEXCLAMATION);
         return false;
     }
-#else  // GLX
+#elif defined(HAVE_X11) && HAVE_X11
     Window winDummy;
     unsigned int borderDummy;
     // connect the glx-context to the window
@@ -520,11 +534,14 @@ void OpenGL_Update()
     if (!surface) return;
     nBackbufferWidth = surface->w;
     nBackbufferHeight = surface->h;
-#elif defined(OSX64)
+#elif defined(HAVE_COCOA) && HAVE_COCOA
     RECT rcWindow;
-     rcWindow.right = GLWin.width;
-      rcWindow.bottom = GLWin.height;
+    rcWindow.right = GLWin.width;
+    rcWindow.bottom = GLWin.height;
 
+#elif defined(USE_WX) && USE_WX
+    RECT rcWindow;
+    // TODO fill in
 #elif defined(_WIN32)
 	RECT rcWindow;
 	if (!EmuWindow::GetParentWnd()) {
@@ -552,7 +569,7 @@ void OpenGL_Update()
     nBackbufferWidth = width;
     nBackbufferHeight = height;
 
-#else // GLX
+#elif defined(HAVE_X11) && HAVE_X11
     // We just check all of our events here
     XEvent event;
     KeySym key;
@@ -669,8 +686,8 @@ void OpenGL_Shutdown()
 {
 #if USE_SDL
 	SDL_Quit();
-#elif defined(OSX64)
-    cocoaGLDelete(GLWin.cocoaCtx);
+#elif defined(HAVE_COCOA) && HAVE_COCOA
+        cocoaGLDelete(GLWin.cocoaCtx);
 #elif defined(_WIN32)
     if (hRC)                                            // Do We Have A Rendering Context?
     {
@@ -706,7 +723,7 @@ void OpenGL_Shutdown()
         XCloseDisplay(GLWin.dpy);
         GLWin.ctx = NULL;
     }
-#ifndef __APPLE__
+#if defined(HAVE_XXF86VM) && HAVE_XXF86VM
     /* switch back to original desktop resolution if we were in fs */
     if (GLWin.dpy != NULL) {
         if (GLWin.fs) {
diff --git a/Source/Plugins/Plugin_VideoOGL/Src/GLUtil.h b/Source/Plugins/Plugin_VideoOGL/Src/GLUtil.h
index e662bd16aa..b822965b73 100644
--- a/Source/Plugins/Plugin_VideoOGL/Src/GLUtil.h
+++ b/Source/Plugins/Plugin_VideoOGL/Src/GLUtil.h
@@ -18,6 +18,7 @@
 #ifndef _GLINIT_H
 #define _GLINIT_H
 
+#include "Config.h"
 #include "pluginspecs_video.h"
 
 #ifdef _WIN32
@@ -32,25 +33,25 @@
 #else // linux basic definitions
 
 #define ARRAYSIZE(A) (sizeof(A)/sizeof((A)[0]))
+#if defined(USE_WX) && USE_WX
+#include <GL/glew.h>
+#include "wx/wx.h"
+#include "wx/glcanvas.h"
+#undef HAVE_X11
+#elif defined(HAVE_X11) && HAVE_X11
 #define I_NEED_OS2_H // HAXXOR
-//#include <GL/glew.h>
-#if defined(HAVE_X11) && HAVE_X11
 #include <GL/glxew.h>
-#else
-#undef BOOL
+#elif defined(HAVE_COCOA) && HAVE_COCOA
 #include <GL/glew.h>
 #include "cocoaGL.h"
-#endif
+#endif // end USE_WX
 
 #if defined(__APPLE__) 
 #include <OpenGL/gl.h>
-
 #else
-
 #include <GL/gl.h>
-
 #endif
-//#include <GL/glx.h>
+
 #define __inline inline
 
 #include <sys/timeb.h>    // ftime(), struct timeb
@@ -85,39 +86,40 @@ inline unsigned long timeGetTime()
 #define GL_REPORT_ERRORD()
 #endif
 
+
 #ifndef _WIN32
-
-#undef I_NEED_OS2_H
-#undef BOOL
-
 #if defined(HAVE_X11) && HAVE_X11
 #include <X11/Xlib.h>
 #include <X11/Xutil.h>
 #include <X11/keysym.h>
-#ifndef __APPLE__
+#if defined(HAVE_XXF86VM) && HAVE_XXF86VM
 #include <X11/extensions/xf86vmode.h>
-#endif
-//#include <gtk/gtk.h>
-#endif
+#endif // XXF86VM
+#endif // X11
+
 #include <sys/stat.h>
 #include <sys/types.h>
 
 typedef struct {
     int screen;
-#if defined(OSX64)
+#if defined(HAVE_COCOA) && HAVE_COCOA
     NSWindow *cocoaWin;
     NSOpenGLContext *cocoaCtx;
-#else //linux
+#elif defined(HAVE_X11) && HAVE_X11
     Window win;
     Display *dpy;
     GLXContext ctx;
     XSetWindowAttributes attr;
     Bool fs;
     Bool doubleBuffered;
-#ifndef __APPLE__
+#if defined(HAVE_XXF86VM) && HAVE_XXF86VM
     XF86VidModeModeInfo deskMode;
-#endif
-#endif
+#endif // XXF86VM
+#endif // X11
+#if defined(USE_WX) && USE_WX
+    wxGLCanvas *Wxcs;
+
+#endif 
     int x, y;
     unsigned int width, height;
     unsigned int depth;    
diff --git a/Source/Plugins/Plugin_VideoOGL/Src/NativeVertexFormat.cpp b/Source/Plugins/Plugin_VideoOGL/Src/NativeVertexFormat.cpp
index ebe1ae70b6..6d68806ba0 100644
--- a/Source/Plugins/Plugin_VideoOGL/Src/NativeVertexFormat.cpp
+++ b/Source/Plugins/Plugin_VideoOGL/Src/NativeVertexFormat.cpp
@@ -15,6 +15,7 @@
 // Official SVN repository and contact information can be found at
 // http://code.google.com/p/dolphin-emu/
 
+#include "Config.h"
 #include "GLUtil.h"
 #include "Profiler.h"
 #include "x64Emitter.h"
diff --git a/Source/Plugins/Plugin_VideoOGL/Src/Render.cpp b/Source/Plugins/Plugin_VideoOGL/Src/Render.cpp
index f05f170754..932095d4af 100644
--- a/Source/Plugins/Plugin_VideoOGL/Src/Render.cpp
+++ b/Source/Plugins/Plugin_VideoOGL/Src/Render.cpp
@@ -142,8 +142,7 @@ bool Renderer::Create2()
         wglSwapIntervalEXT(0);
     else
         ERROR_LOG("no support for SwapInterval (framerate clamped to monitor refresh rate)\n");
-#else
-#ifdef __linux__
+#elif defined(HAVE_X11) && HAVE_X11
     if (glXSwapIntervalSGI)
        glXSwapIntervalSGI(0);
     else
@@ -153,7 +152,7 @@ bool Renderer::Create2()
 	//TODO
 
 #endif
-#endif
+
     // check the max texture width and height
     glGetIntegerv(GL_MAX_TEXTURE_SIZE, (GLint *)&g_MaxTexWidth);
     g_MaxTexHeight = g_MaxTexWidth;
diff --git a/Source/Plugins/Plugin_VideoOGL/Src/main.cpp b/Source/Plugins/Plugin_VideoOGL/Src/main.cpp
index 2e7ea692b6..ce17d19ace 100644
--- a/Source/Plugins/Plugin_VideoOGL/Src/main.cpp
+++ b/Source/Plugins/Plugin_VideoOGL/Src/main.cpp
@@ -154,7 +154,8 @@ void DllConfig(HWND _hParent)
 	frame->ShowModal();
 	//win.SetHWND(0);
 
-#elif defined(HAVE_WX) && HAVE_WX
+#elif defined(HAVE_X11) && HAVE_X11
+#if defined(HAVE_XXF86VM) && HAVE_XXF86VM
 	ConfigDialog frame(NULL);
 	g_Config.Load();
     int glxMajorVersion, glxMinorVersion;
@@ -188,6 +189,7 @@ void DllConfig(HWND _hParent)
         }    
 	XFree(modes);
 	frame.ShowModal();
+#endif
 #else
 	//TODO
 #endif
@@ -235,9 +237,9 @@ void Video_DoState(unsigned char **ptr, int mode) {
 //      PanicAlert("Can't Activate The GL Rendering Context for saving");
 //      return;
 //  }
-#elif defined(OSX64)
+#elif defined(HAVE_COCOA) && HAVE_COCOA
     cocoaGLMakeCurrent(GLWin.cocoaCtx,GLWin.cocoaWin);
-#else // Linux
+#elif defined(HAVE_X11) && HAVE_X11
     glXMakeCurrent(GLWin.dpy, GLWin.win, GLWin.ctx);
 #endif