summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorRyan Houdek <Sonicadvance1@gmail.com>2013-01-24 10:31:08 -0600
committerRyan Houdek <Sonicadvance1@gmail.com>2013-01-24 10:31:08 -0600
commit73eb98ed8e85e2c3fdeca440e7aed50117bac8f8 (patch)
treea1c2760be2e77082df487ad7456ab8c61a541b68 /Source/Core
parent2db0c4270eda2e652bb39e394aa8a576785a2354 (diff)
Move swap control to the host specific GLInterface files.
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/DolphinWX/Src/GLInterface/EGL.cpp6
-rw-r--r--Source/Core/DolphinWX/Src/GLInterface/EGL.h1
-rw-r--r--Source/Core/DolphinWX/Src/GLInterface/GLX.cpp9
-rw-r--r--Source/Core/DolphinWX/Src/GLInterface/GLX.h1
-rw-r--r--Source/Core/DolphinWX/Src/GLInterface/InterfaceBase.h1
-rw-r--r--Source/Core/DolphinWX/Src/GLInterface/WGL.cpp7
-rw-r--r--Source/Core/DolphinWX/Src/GLInterface/WGL.h1
-rw-r--r--Source/Core/DolphinWX/Src/GLInterface/WX.cpp13
-rw-r--r--Source/Core/DolphinWX/Src/GLInterface/WX.h1
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);