From d1b5357504807d8f4bf5f23a289eeaa71b18307d Mon Sep 17 00:00:00 2001 From: Lynix Date: Wed, 18 Jan 2017 23:51:59 +0100 Subject: [PATCH] Utility/X11: Try to fix Linux implementation --- src/Nazara/Utility/X11/CursorImpl.cpp | 13 ++++++++----- src/Nazara/Utility/X11/CursorImpl.hpp | 6 ++++-- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/Nazara/Utility/X11/CursorImpl.cpp b/src/Nazara/Utility/X11/CursorImpl.cpp index 082825c50..2925b2b6d 100644 --- a/src/Nazara/Utility/X11/CursorImpl.cpp +++ b/src/Nazara/Utility/X11/CursorImpl.cpp @@ -162,9 +162,10 @@ namespace Nz bool CursorImpl::Create(SystemCursor cursor) { ScopedXCBConnection connection; + xcb_screen_t* screen = X11::XCBDefaultScreen(connection); - if (xcb_cursor_context_new(connection, m_screen, &m_cursorContext) >= 0) - m_cursor = xcb_cursor_load_cursor(ctx, s_systemCursorIds[cursor]); + if (xcb_cursor_context_new(connection, screen, &m_cursorContext) >= 0) + m_cursor = xcb_cursor_load_cursor(m_cursorContext, s_systemCursorIds[cursor]); return true; } @@ -196,12 +197,12 @@ namespace Nz return false; } - hiddenCursor = xcb_generate_id(connection); + s_hiddenCursor = xcb_generate_id(connection); // Create the cursor, using the pixmap as both the shape and the mask of the cursor if (!X11::CheckCookie( connection, xcb_create_cursor(connection, - hiddenCursor, + s_hiddenCursor, cursorPixmap, cursorPixmap, 0, 0, 0, // Foreground RGB color @@ -226,7 +227,9 @@ namespace Nz s_hiddenCursor = 0; } } - + + xcb_cursor_t CursorImpl::s_hiddenCursor = 0; + std::array CursorImpl::s_systemCursorIds = { // http://gnome-look.org/content/preview.php?preview=1&id=128170&file1=128170-1.png&file2=&file3=&name=Dummy+X11+cursors&PHPSESSID=6 diff --git a/src/Nazara/Utility/X11/CursorImpl.hpp b/src/Nazara/Utility/X11/CursorImpl.hpp index b16cd4aa2..4041b81ed 100644 --- a/src/Nazara/Utility/X11/CursorImpl.hpp +++ b/src/Nazara/Utility/X11/CursorImpl.hpp @@ -10,6 +10,7 @@ #include #include #include +#include namespace Nz { @@ -22,7 +23,7 @@ namespace Nz public: bool Create(const Image& image, int hotSpotX, int hotSpotY); bool Create(SystemCursor cursor); - + void Destroy(); xcb_cursor_t GetCursor(); @@ -33,7 +34,8 @@ namespace Nz xcb_cursor_t m_cursor = 0; xcb_cursor_context_t* m_cursorContext = nullptr; - + + static xcb_cursor_t s_hiddenCursor; static std::array s_systemCursorIds; }; }