diff options
| author | Ryan Houdek <Sonicadvance1@gmail.com> | 2013-01-24 10:31:08 -0600 |
|---|---|---|
| committer | Ryan Houdek <Sonicadvance1@gmail.com> | 2013-01-24 10:31:08 -0600 |
| commit | 73eb98ed8e85e2c3fdeca440e7aed50117bac8f8 (patch) | |
| tree | a1c2760be2e77082df487ad7456ab8c61a541b68 /Source/Core | |
| parent | 2db0c4270eda2e652bb39e394aa8a576785a2354 (diff) | |
Move swap control to the host specific GLInterface files.
Diffstat (limited to 'Source/Core')
| -rw-r--r-- | Source/Core/DolphinWX/Src/GLInterface/EGL.cpp | 6 | ||||
| -rw-r--r-- | Source/Core/DolphinWX/Src/GLInterface/EGL.h | 1 | ||||
| -rw-r--r-- | Source/Core/DolphinWX/Src/GLInterface/GLX.cpp | 9 | ||||
| -rw-r--r-- | Source/Core/DolphinWX/Src/GLInterface/GLX.h | 1 | ||||
| -rw-r--r-- | Source/Core/DolphinWX/Src/GLInterface/InterfaceBase.h | 1 | ||||
| -rw-r--r-- | Source/Core/DolphinWX/Src/GLInterface/WGL.cpp | 7 | ||||
| -rw-r--r-- | Source/Core/DolphinWX/Src/GLInterface/WGL.h | 1 | ||||
| -rw-r--r-- | Source/Core/DolphinWX/Src/GLInterface/WX.cpp | 13 | ||||
| -rw-r--r-- | Source/Core/DolphinWX/Src/GLInterface/WX.h | 1 |
9 files changed, 40 insertions, 0 deletions
diff --git a/Source/Core/DolphinWX/Src/GLInterface/EGL.cpp b/Source/Core/DolphinWX/Src/GLInterface/EGL.cpp index b8716ab467..942b60fc1e 100644 --- a/Source/Core/DolphinWX/Src/GLInterface/EGL.cpp +++ b/Source/Core/DolphinWX/Src/GLInterface/EGL.cpp @@ -26,6 +26,12 @@ void cInterfaceEGL::UpdateFPSDisplay(const char *text) { XStoreName(GLWin.dpy, GLWin.win, text); } + +void cInterfaceEGL::SwapInterval(int Interval) +{ + eglSwapInterval(GLWin.egl_dpy, Interval); +} + void cInterfaceEGL::Swap() { eglSwapBuffers(GLWin.egl_dpy, GLWin.egl_surf); diff --git a/Source/Core/DolphinWX/Src/GLInterface/EGL.h b/Source/Core/DolphinWX/Src/GLInterface/EGL.h index c4b6a00b6c..fe127fe0ba 100644 --- a/Source/Core/DolphinWX/Src/GLInterface/EGL.h +++ b/Source/Core/DolphinWX/Src/GLInterface/EGL.h @@ -34,6 +34,7 @@ private: cX11Window XWindow; public: friend class cX11Window; + void SwapInterval(int Interval); void Swap(); void UpdateFPSDisplay(const char *Text); bool Create(void *&window_handle); diff --git a/Source/Core/DolphinWX/Src/GLInterface/GLX.cpp b/Source/Core/DolphinWX/Src/GLInterface/GLX.cpp index ef60873531..5745823cbf 100644 --- a/Source/Core/DolphinWX/Src/GLInterface/GLX.cpp +++ b/Source/Core/DolphinWX/Src/GLInterface/GLX.cpp @@ -27,6 +27,15 @@ void cInterfaceGLX::UpdateFPSDisplay(const char *text) { XStoreName(GLWin.dpy, GLWin.win, text); } + +void cInterfaceGLX::SwapInterval(int Interval) +{ + if (glXSwapIntervalSGI) + glXSwapIntervalSGI(Interval); + else + ERROR_LOG(VIDEO, "No support for SwapInterval (framerate clamped to monitor refresh rate)."); +} + void cInterfaceGLX::Swap() { glXSwapBuffers(GLWin.dpy, GLWin.win); diff --git a/Source/Core/DolphinWX/Src/GLInterface/GLX.h b/Source/Core/DolphinWX/Src/GLInterface/GLX.h index 73a6690ec5..83bb14a507 100644 --- a/Source/Core/DolphinWX/Src/GLInterface/GLX.h +++ b/Source/Core/DolphinWX/Src/GLInterface/GLX.h @@ -31,6 +31,7 @@ private: cX11Window XWindow; public: friend class cX11Window; + void SwapInterval(int Interval); void Swap(); void UpdateFPSDisplay(const char *Text); bool Create(void *&window_handle); diff --git a/Source/Core/DolphinWX/Src/GLInterface/InterfaceBase.h b/Source/Core/DolphinWX/Src/GLInterface/InterfaceBase.h index 3e4f10fcd4..c2d1ffc54b 100644 --- a/Source/Core/DolphinWX/Src/GLInterface/InterfaceBase.h +++ b/Source/Core/DolphinWX/Src/GLInterface/InterfaceBase.h @@ -29,6 +29,7 @@ public: virtual bool MakeCurrent() = 0; virtual void Shutdown() = 0; + virtual void SwapInterval(int Interval) { } virtual u32 GetBackBufferWidth() { return s_backbuffer_width; } virtual u32 GetBackBufferHeight() { return s_backbuffer_height; } virtual void SetBackBufferDimensions(u32 W, u32 H) {s_backbuffer_width = W; s_backbuffer_height = H; } diff --git a/Source/Core/DolphinWX/Src/GLInterface/WGL.cpp b/Source/Core/DolphinWX/Src/GLInterface/WGL.cpp index c97cb48bdf..ce1bb3d946 100644 --- a/Source/Core/DolphinWX/Src/GLInterface/WGL.cpp +++ b/Source/Core/DolphinWX/Src/GLInterface/WGL.cpp @@ -27,6 +27,13 @@ static HDC hDC = NULL; // Private GDI Device Context static HGLRC hRC = NULL; // Permanent Rendering Context +void cInterfaceWGL::SwapInterval(int Interval) +{ + if (WGLEW_EXT_swap_control) + wglSwapIntervalEXT(Interval); + else + ERROR_LOG(VIDEO, "No support for SwapInterval (framerate clamped to monitor refresh rate)."); +} void cInterfaceWGL::Swap() { SwapBuffers(hDC); diff --git a/Source/Core/DolphinWX/Src/GLInterface/WGL.h b/Source/Core/DolphinWX/Src/GLInterface/WGL.h index 184ddd475f..18b8b2afb0 100644 --- a/Source/Core/DolphinWX/Src/GLInterface/WGL.h +++ b/Source/Core/DolphinWX/Src/GLInterface/WGL.h @@ -28,6 +28,7 @@ class cInterfaceWGL : public cInterfaceBase { public: + void SwapInterval(int Interval); void Swap(); void UpdateFPSDisplay(const char *Text); bool Create(void *&window_handle); diff --git a/Source/Core/DolphinWX/Src/GLInterface/WX.cpp b/Source/Core/DolphinWX/Src/GLInterface/WX.cpp index d5415c8ed9..16de6369a7 100644 --- a/Source/Core/DolphinWX/Src/GLInterface/WX.cpp +++ b/Source/Core/DolphinWX/Src/GLInterface/WX.cpp @@ -23,6 +23,19 @@ #include "../GLInterface.h" #include "WX.h" +void cInterfaceWX::SwapInterval(int Interval) +{ + // WX interface only used on Apple +#ifdef __APPLE__ +#if defined USE_WX && USE_WX + NSOpenGLContext *ctx = GLWin.glCtxt->GetWXGLContext(); +#else + NSOpenGLContext *ctx = GLWin.cocoaCtx; +#endif + [ctx setValues: &Interval forParameter: NSOpenGLCPSwapInterval]; +#endif +} + void cInterfaceWX::Swap() { GLWin.glCanvas->SwapBuffers(); diff --git a/Source/Core/DolphinWX/Src/GLInterface/WX.h b/Source/Core/DolphinWX/Src/GLInterface/WX.h index 7772f864e5..82304942ea 100644 --- a/Source/Core/DolphinWX/Src/GLInterface/WX.h +++ b/Source/Core/DolphinWX/Src/GLInterface/WX.h @@ -35,6 +35,7 @@ class cInterfaceWX : public cInterfaceBase { public: + void SwapInterval(int Interval); void Swap(); void UpdateFPSDisplay(const char *Text); bool Create(void *&window_handle); |
