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
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user