Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKonrad Puklicki <puklicki>2020-05-27 13:04:14 +0300
committerJulian Eisel <julian@blender.org>2020-05-27 13:06:35 +0300
commite490dc4346dba5f29dada59ef421dfff499d65a9 (patch)
tree230efe66695ea208e66422a21c494b1cd52e251e /source/blender/windowmanager
parentbab5fbb66c03145705b32453ca781bd68bdb4134 (diff)
UI: Skip unnecessary cursor setting
Currently, in sculpting, weight paint and vertex paint modes every cursor movement triggers redraw of a brush. During that redraw, native cursor is set. Under the hood, setting the cursor causes freeing of previous cursor and allocating a new one. In most cases, in previously mentioned modes, recreating cursor is unnecessary since cursor stays the same. This patch adds a check which skips cursor change if requested cursor is already set. The check could be added in pain_cursor.c, but I felt adding it inside WM_cursor_set function would hopefully skip more unnecessary cursor reallocations. Differential Revision: https://developer.blender.org/D7828 Reviewed by: Julian Eisel
Diffstat (limited to 'source/blender/windowmanager')
-rw-r--r--source/blender/windowmanager/intern/wm_cursors.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/source/blender/windowmanager/intern/wm_cursors.c b/source/blender/windowmanager/intern/wm_cursors.c
index 58ca3bf1b95..07d7ccf31db 100644
--- a/source/blender/windowmanager/intern/wm_cursors.c
+++ b/source/blender/windowmanager/intern/wm_cursors.c
@@ -145,6 +145,16 @@ void WM_cursor_set(wmWindow *win, int curs)
return; /* Can't set custom cursor before Window init */
}
+ if (curs == WM_CURSOR_DEFAULT && win->modalcursor) {
+ curs = win->modalcursor;
+ }
+
+ if (win->cursor == curs) {
+ return; /* Cursor is already set */
+ }
+
+ win->cursor = curs;
+
if (curs == WM_CURSOR_NONE) {
GHOST_SetCursorVisibility(win->ghostwin, 0);
return;
@@ -152,12 +162,6 @@ void WM_cursor_set(wmWindow *win, int curs)
GHOST_SetCursorVisibility(win->ghostwin, 1);
- if (curs == WM_CURSOR_DEFAULT && win->modalcursor) {
- curs = win->modalcursor;
- }
-
- win->cursor = curs;
-
if (curs < 0 || curs >= WM_CURSOR_NUM) {
BLI_assert(!"Invalid cursor number");
return;