[Bf-blender-cvs] [f04fd50] master: Fix X11 mouse cursor flickering briefly to the standard cursor when changing it.

Brecht Van Lommel noreply at git.blender.org
Thu Mar 6 18:25:00 CET 2014


Commit: f04fd5007310bd36fa4b582e1079cdd51adf12db
Author: Brecht Van Lommel
Date:   Thu Mar 6 18:08:59 2014 +0100
https://developer.blender.org/rBf04fd5007310bd36fa4b582e1079cdd51adf12db

Fix X11 mouse cursor flickering briefly to the standard cursor when changing it.

Not very visible now but it matters for the next commit.

===================================================================

M	intern/ghost/intern/GHOST_WindowX11.cpp
M	intern/ghost/intern/GHOST_WindowX11.h

===================================================================

diff --git a/intern/ghost/intern/GHOST_WindowX11.cpp b/intern/ghost/intern/GHOST_WindowX11.cpp
index c32b272..29ba1ff 100644
--- a/intern/ghost/intern/GHOST_WindowX11.cpp
+++ b/intern/ghost/intern/GHOST_WindowX11.cpp
@@ -183,7 +183,8 @@ GHOST_WindowX11(
 	m_valid_setup(false),
 	m_invalid_window(false),
 	m_empty_cursor(None),
-	m_custom_cursor(None)
+	m_custom_cursor(None),
+	m_visible_cursor(None)
 {
 	
 	/* Set up the minimum atrributes that we require and see if
@@ -1361,7 +1362,10 @@ setWindowCursorVisibility(
 	Cursor xcursor;
 	
 	if (visible) {
-		xcursor = getStandardCursor(getCursorShape() );
+		if (m_visible_cursor)
+			xcursor = m_visible_cursor;
+		else
+			xcursor = getStandardCursor(getCursorShape() );
 	}
 	else {
 		xcursor = getEmptyCursor();
@@ -1424,6 +1428,8 @@ setWindowCursorShape(
 		GHOST_TStandardCursor shape)
 {
 	Cursor xcursor = getStandardCursor(shape);
+
+	m_visible_cursor = xcursor;
 	
 	XDefineCursor(m_display, m_window, xcursor);
 	XFlush(m_display);
@@ -1473,6 +1479,8 @@ setWindowCustomCursorShape(
 	m_custom_cursor = XCreatePixmapCursor(m_display, bitmap_pix, mask_pix, &fg, &bg, hotX, hotY);
 	XDefineCursor(m_display, m_window, m_custom_cursor);
 	XFlush(m_display);
+
+	m_visible_cursor = m_custom_cursor;
 	
 	XFreePixmap(m_display, bitmap_pix);
 	XFreePixmap(m_display, mask_pix);
diff --git a/intern/ghost/intern/GHOST_WindowX11.h b/intern/ghost/intern/GHOST_WindowX11.h
index 7cbdcde..afe21b0 100644
--- a/intern/ghost/intern/GHOST_WindowX11.h
+++ b/intern/ghost/intern/GHOST_WindowX11.h
@@ -373,6 +373,9 @@ private:
 	
 	/** XCursor structure of the custom cursor */
 	Cursor m_custom_cursor;
+
+	/** XCursor to show when cursor is visible */
+	Cursor m_visible_cursor;
 	
 	/** Cache of XC_* ID's to XCursor structures */
 	std::map<unsigned int, Cursor> m_standard_cursors;




More information about the Bf-blender-cvs mailing list