summaryrefslogtreecommitdiff
path: root/Source/Core/Common/GL/GLInterface/EGLX11.cpp
diff options
context:
space:
mode:
authorStenzek <stenzek@gmail.com>2018-10-03 23:02:45 +1000
committerStenzek <stenzek@gmail.com>2018-10-20 21:11:34 +1000
commit134d967be2dd4ba9531abb8ba8494c3ac423ca72 (patch)
tree3486a0d8a8f5c1a141bccc1e9cc56306cde327b4 /Source/Core/Common/GL/GLInterface/EGLX11.cpp
parent74b82bab3b6e4e8a1799bbcbdc5244f20f4d2826 (diff)
Refactoring and cleanup of GLInterface (now GLContext)
Diffstat (limited to 'Source/Core/Common/GL/GLInterface/EGLX11.cpp')
-rw-r--r--Source/Core/Common/GL/GLInterface/EGLX11.cpp46
1 files changed, 22 insertions, 24 deletions
diff --git a/Source/Core/Common/GL/GLInterface/EGLX11.cpp b/Source/Core/Common/GL/GLInterface/EGLX11.cpp
index 432f0aa601..58bf3133a8 100644
--- a/Source/Core/Common/GL/GLInterface/EGLX11.cpp
+++ b/Source/Core/Common/GL/GLInterface/EGLX11.cpp
@@ -5,41 +5,39 @@
#include "Common/GL/GLInterface/EGLX11.h"
#include "Common/Logging/Log.h"
-EGLDisplay cInterfaceEGLX11::OpenDisplay()
+GLContextEGLX11::~GLContextEGLX11()
{
- dpy = XOpenDisplay(nullptr);
- XWindow.Initialize(dpy);
- return eglGetDisplay(dpy);
+ if (m_display)
+ XCloseDisplay(m_display);
}
-EGLNativeWindowType cInterfaceEGLX11::InitializePlatform(EGLNativeWindowType host_window,
- EGLConfig config)
+EGLDisplay GLContextEGLX11::OpenEGLDisplay()
+{
+ if (!m_display)
+ m_display = XOpenDisplay(nullptr);
+
+ return eglGetDisplay(m_display);
+}
+
+EGLNativeWindowType GLContextEGLX11::GetEGLNativeWindow(EGLConfig config)
{
EGLint vid;
- eglGetConfigAttrib(egl_dpy, config, EGL_NATIVE_VISUAL_ID, &vid);
+ eglGetConfigAttrib(m_egl_display, config, EGL_NATIVE_VISUAL_ID, &vid);
- XVisualInfo visTemplate;
+ XVisualInfo visTemplate = {};
visTemplate.visualid = vid;
- XVisualInfo* vi;
int nVisuals;
- vi = XGetVisualInfo(dpy, VisualIDMask, &visTemplate, &nVisuals);
+ XVisualInfo* vi = XGetVisualInfo(m_display, VisualIDMask, &visTemplate, &nVisuals);
- XWindowAttributes attribs;
- if (!XGetWindowAttributes(dpy, (Window)host_window, &attribs))
- {
- ERROR_LOG(VIDEO, "Window attribute retrieval failed");
- return 0;
- }
+ if (m_x_window)
+ m_x_window.reset();
- s_backbuffer_width = attribs.width;
- s_backbuffer_height = attribs.height;
+ m_x_window = GLX11Window::Create(m_display, reinterpret_cast<Window>(m_host_window), vi);
+ m_backbuffer_width = m_x_window->GetWidth();
+ m_backbuffer_height = m_x_window->GetHeight();
- return (EGLNativeWindowType)XWindow.CreateXWindow((Window)host_window, vi);
-}
+ XFree(vi);
-void cInterfaceEGLX11::ShutdownPlatform()
-{
- XWindow.DestroyXWindow();
- XCloseDisplay(dpy);
+ return reinterpret_cast<EGLNativeWindowType>(m_x_window->GetWindow());
}