1
0
Fork 0

Platform/Unix/X11SharedDisplay: pass a pointer to the display to XReleaseDisplay() just to be sure client code has a valid pointer

This commit is contained in:
Henrik Hautakoski 2020-10-17 14:18:41 +02:00
parent 782f116d7c
commit 10e1a9071e
8 changed files with 12 additions and 9 deletions

View file

@ -160,7 +160,7 @@ void GLXContext::destroy()
} }
if (m_disp) { if (m_disp) {
XReleaseDisplay(); XReleaseDisplay(m_disp);
m_disp = NULL; m_disp = NULL;
} }

View file

@ -60,7 +60,7 @@ void PlatformMisc::GetDisplayModes(std::vector<DisplayMode>& modes)
Log::error("Failed to use XRandR extension while trying to get display modes."); Log::error("Failed to use XRandR extension while trying to get display modes.");
} }
XReleaseDisplay(); XReleaseDisplay(disp);
} else { } else {
Log::error("Failed to connect to the X server while trying to get display modes."); Log::error("Failed to connect to the X server while trying to get display modes.");
} }
@ -104,7 +104,7 @@ DisplayMode PlatformMisc::GetDesktopMode()
Log::error("Failed to use XRandR extension while trying to get desktop display mode."); Log::error("Failed to use XRandR extension while trying to get desktop display mode.");
} }
XReleaseDisplay(); XReleaseDisplay(disp);
} else { } else {
Log::error("Failed to connect to the X server while trying to get desktop display mode."); Log::error("Failed to connect to the X server while trying to get desktop display mode.");
} }

View file

@ -75,7 +75,7 @@ void X11Display::destroy()
} }
if (m_disp) { if (m_disp) {
XReleaseDisplay(); XReleaseDisplay(m_disp);
m_disp = NULL; m_disp = NULL;
} }
} }

View file

@ -16,7 +16,7 @@ X11EventQueue::X11EventQueue()
X11EventQueue::~X11EventQueue() X11EventQueue::~X11EventQueue()
{ {
if (m_disp) { if (m_disp) {
XReleaseDisplay(); XReleaseDisplay(m_disp);
} }
} }

View file

@ -210,7 +210,7 @@ m_disp(NULL)
X11Keyboard::~X11Keyboard() X11Keyboard::~X11Keyboard()
{ {
if (m_disp) { if (m_disp) {
XReleaseDisplay(); XReleaseDisplay(m_disp);
} }
} }

View file

@ -16,7 +16,7 @@ m_btn_state(0)
X11Mouse::~X11Mouse() X11Mouse::~X11Mouse()
{ {
if (m_disp) { if (m_disp) {
XReleaseDisplay(); XReleaseDisplay(m_disp);
} }
} }

View file

@ -1,4 +1,5 @@
#include <assert.h>
#include "X11SharedDisplay.h" #include "X11SharedDisplay.h"
namespace sp { namespace sp {
@ -18,7 +19,9 @@ unsigned int refcount = 0;
return sharedDisplay; return sharedDisplay;
} }
void XReleaseDisplay() { void XReleaseDisplay(::Display* disp) {
assert(disp == sharedDisplay);
if (refcount < 1) { if (refcount < 1) {
return; return;

View file

@ -9,7 +9,7 @@ namespace sp {
::Display* XGetDisplay(); ::Display* XGetDisplay();
void XReleaseDisplay(); void XReleaseDisplay(::Display* disp);
Atom getAtom(const std::string& name, bool onlyIfExists = false); Atom getAtom(const std::string& name, bool onlyIfExists = false);