From 6d49b623e2efce59b58bb1295024ab8ac492370a Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 25 Oct 2018 16:06:47 +1100 Subject: WM: space, region type filtering for paint cursor Avoids calling poll on mouse-move for unrelated space/region types. --- source/blender/windowmanager/intern/wm_draw.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'source/blender/windowmanager/intern/wm_draw.c') diff --git a/source/blender/windowmanager/intern/wm_draw.c b/source/blender/windowmanager/intern/wm_draw.c index b76fc0abfa7..c8e0360ed88 100644 --- a/source/blender/windowmanager/intern/wm_draw.c +++ b/source/blender/windowmanager/intern/wm_draw.c @@ -85,7 +85,7 @@ /* ******************* paint cursor *************** */ -static void wm_paintcursor_draw(bContext *C, ARegion *ar) +static void wm_paintcursor_draw(bContext *C, ScrArea *sa, ARegion *ar) { wmWindowManager *wm = CTX_wm_manager(C); wmWindow *win = CTX_wm_window(C); @@ -94,6 +94,15 @@ static void wm_paintcursor_draw(bContext *C, ARegion *ar) if (ar->visible && ar == screen->active_region) { for (pc = wm->paintcursors.first; pc; pc = pc->next) { + + if ((pc->space_type != SPACE_TYPE_ANY) && (sa->spacetype != pc->space_type)) { + continue; + } + + if ((pc->region_type != RGN_TYPE_ANY) && (ar->regiontype != pc->region_type)) { + continue; + } + if (pc->poll == NULL || pc->poll(C)) { /* Prevent drawing outside region. */ glEnable(GL_SCISSOR_TEST); @@ -612,7 +621,7 @@ static void wm_draw_window_onscreen(bContext *C, wmWindow *win, int view) CTX_wm_region_set(C, ar); /* make region ready for draw, scissor, pixelspace */ - wm_paintcursor_draw(C, ar); + wm_paintcursor_draw(C, sa, ar); CTX_wm_region_set(C, NULL); CTX_wm_area_set(C, NULL); -- cgit v1.2.3