diff options
| author | Stenzek <stenzek@gmail.com> | 2018-10-03 23:02:45 +1000 |
|---|---|---|
| committer | Stenzek <stenzek@gmail.com> | 2018-10-20 21:11:34 +1000 |
| commit | 134d967be2dd4ba9531abb8ba8494c3ac423ca72 (patch) | |
| tree | 3486a0d8a8f5c1a141bccc1e9cc56306cde327b4 /Source/Core/Common/GL/GLInterface/EGLX11.cpp | |
| parent | 74b82bab3b6e4e8a1799bbcbdc5244f20f4d2826 (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.cpp | 46 |
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()); } |
