From 78017916f7c7a8ec8907c9b993214ff8ec3c3557 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 4 Jun 2020 20:17:05 +1000 Subject: Fix error removing the image paint cursor Mix up with imapaint.paintcursor & imapaint.paint.paint_cursor Remove imapaint.paintcursor since it wasn't used. Also rename paint_cursor_start_explicit() to paint_cursor_start(), removing the existing paint_cursor_start() since it took the paint struct from the context, a value that's known by all callers. --- source/blender/blenkernel/intern/scene.c | 1 - source/blender/blenloader/intern/readfile.c | 1 - source/blender/editors/sculpt_paint/paint_cursor.c | 12 +----------- source/blender/editors/sculpt_paint/paint_image.c | 11 ++++++----- source/blender/editors/sculpt_paint/paint_intern.h | 3 +-- source/blender/editors/sculpt_paint/paint_vertex.c | 4 ++-- source/blender/editors/sculpt_paint/sculpt.c | 2 +- source/blender/makesdna/DNA_scene_types.h | 2 -- 8 files changed, 11 insertions(+), 25 deletions(-) diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c index 8e65864e460..7447971e7c5 100644 --- a/source/blender/blenkernel/intern/scene.c +++ b/source/blender/blenkernel/intern/scene.c @@ -668,7 +668,6 @@ ToolSettings *BKE_toolsettings_copy(ToolSettings *toolsettings, const int flag) } BKE_paint_copy(&ts->imapaint.paint, &ts->imapaint.paint, flag); - ts->imapaint.paintcursor = NULL; ts->particle.paintcursor = NULL; ts->particle.scene = NULL; ts->particle.object = NULL; diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index d3c391a1595..db0187d0486 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -6941,7 +6941,6 @@ static void direct_link_scene(FileData *fd, Scene *sce) direct_link_paint(fd, sce, &sce->toolsettings->imapaint.paint); - sce->toolsettings->imapaint.paintcursor = NULL; sce->toolsettings->particle.paintcursor = NULL; sce->toolsettings->particle.scene = NULL; sce->toolsettings->particle.object = NULL; diff --git a/source/blender/editors/sculpt_paint/paint_cursor.c b/source/blender/editors/sculpt_paint/paint_cursor.c index e31efe5abd7..4222a466a7b 100644 --- a/source/blender/editors/sculpt_paint/paint_cursor.c +++ b/source/blender/editors/sculpt_paint/paint_cursor.c @@ -1674,10 +1674,8 @@ static void paint_draw_cursor(bContext *C, int x, int y, void *UNUSED(unused)) /* Public API */ -void paint_cursor_start(bContext *C, bool (*poll)(bContext *C)) +void paint_cursor_start(Paint *p, bool (*poll)(bContext *C)) { - Paint *p = BKE_paint_get_active_from_context(C); - if (p && !p->paint_cursor) { p->paint_cursor = WM_paint_cursor_activate( SPACE_TYPE_ANY, RGN_TYPE_ANY, poll, paint_draw_cursor, NULL); @@ -1686,11 +1684,3 @@ void paint_cursor_start(bContext *C, bool (*poll)(bContext *C)) /* Invalidate the paint cursors. */ BKE_paint_invalidate_overlay_all(); } - -void paint_cursor_start_explicit(Paint *p, bool (*poll)(bContext *C)) -{ - if (p && !p->paint_cursor) { - p->paint_cursor = WM_paint_cursor_activate( - SPACE_TYPE_ANY, RGN_TYPE_ANY, poll, paint_draw_cursor, NULL); - } -} diff --git a/source/blender/editors/sculpt_paint/paint_image.c b/source/blender/editors/sculpt_paint/paint_image.c index cf2a36de6aa..6ad4d1e650a 100644 --- a/source/blender/editors/sculpt_paint/paint_image.c +++ b/source/blender/editors/sculpt_paint/paint_image.c @@ -785,14 +785,15 @@ static void toggle_paint_cursor(bContext *C, int enable) { Scene *scene = CTX_data_scene(C); ToolSettings *settings = scene->toolsettings; + Paint *p = &settings->imapaint.paint; - if (settings->imapaint.paintcursor && !enable) { - WM_paint_cursor_end(settings->imapaint.paintcursor); - settings->imapaint.paintcursor = NULL; + if (p->paint_cursor && !enable) { + WM_paint_cursor_end(p->paint_cursor); + p->paint_cursor = NULL; paint_cursor_delete_textures(); } else if (enable) { - paint_cursor_start(C, image_paint_poll); + paint_cursor_start(p, image_paint_poll); } } @@ -822,7 +823,7 @@ void ED_space_image_paint_update(Main *bmain, wmWindowManager *wm, Scene *scene) if (enabled) { BKE_paint_init(bmain, scene, PAINT_MODE_TEXTURE_2D, PAINT_CURSOR_TEXTURE_PAINT); - paint_cursor_start_explicit(&imapaint->paint, image_paint_poll); + paint_cursor_start(&imapaint->paint, image_paint_poll); } else { paint_cursor_delete_textures(); diff --git a/source/blender/editors/sculpt_paint/paint_intern.h b/source/blender/editors/sculpt_paint/paint_intern.h index 29c69386ada..0d4e957c77b 100644 --- a/source/blender/editors/sculpt_paint/paint_intern.h +++ b/source/blender/editors/sculpt_paint/paint_intern.h @@ -90,8 +90,7 @@ void *paint_stroke_mode_data(struct PaintStroke *stroke); float paint_stroke_distance_get(struct PaintStroke *stroke); void paint_stroke_set_mode_data(struct PaintStroke *stroke, void *mode_data); bool paint_poll(struct bContext *C); -void paint_cursor_start(struct bContext *C, bool (*poll)(struct bContext *C)); -void paint_cursor_start_explicit(struct Paint *p, bool (*poll)(struct bContext *C)); +void paint_cursor_start(struct Paint *p, bool (*poll)(struct bContext *C)); void paint_cursor_delete_textures(void); /* paint_vertex.c */ diff --git a/source/blender/editors/sculpt_paint/paint_vertex.c b/source/blender/editors/sculpt_paint/paint_vertex.c index b7070af5fe3..6de54b3ae6a 100644 --- a/source/blender/editors/sculpt_paint/paint_vertex.c +++ b/source/blender/editors/sculpt_paint/paint_vertex.c @@ -1210,7 +1210,7 @@ static void ed_vwpaintmode_enter_generic( BKE_paint_ensure(scene->toolsettings, (Paint **)&scene->toolsettings->vpaint); Paint *paint = BKE_paint_get_active_from_paintmode(scene, paint_mode); - paint_cursor_start_explicit(paint, vertex_paint_poll); + paint_cursor_start(paint, vertex_paint_poll); BKE_paint_init(bmain, scene, paint_mode, PAINT_CURSOR_VERTEX_PAINT); } else if (mode_flag == OB_MODE_WEIGHT_PAINT) { @@ -1218,7 +1218,7 @@ static void ed_vwpaintmode_enter_generic( BKE_paint_ensure(scene->toolsettings, (Paint **)&scene->toolsettings->wpaint); Paint *paint = BKE_paint_get_active_from_paintmode(scene, paint_mode); - paint_cursor_start_explicit(paint, weight_paint_poll); + paint_cursor_start(paint, weight_paint_poll); BKE_paint_init(bmain, scene, paint_mode, PAINT_CURSOR_WEIGHT_PAINT); /* weight paint specific */ diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c index 4172685d3ee..b742ce91dd9 100644 --- a/source/blender/editors/sculpt_paint/sculpt.c +++ b/source/blender/editors/sculpt_paint/sculpt.c @@ -7635,7 +7635,7 @@ void ED_object_sculptmode_enter_ex(Main *bmain, Paint *paint = BKE_paint_get_active_from_paintmode(scene, PAINT_MODE_SCULPT); BKE_paint_init(bmain, scene, PAINT_MODE_SCULPT, PAINT_CURSOR_SCULPT); - paint_cursor_start_explicit(paint, SCULPT_poll_view3d); + paint_cursor_start(paint, SCULPT_poll_view3d); /* Check dynamic-topology flag; re-enter dynamic-topology mode when changing modes, * As long as no data was added that is not supported. */ diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h index 8c34a7cb0a1..c50e48982b3 100644 --- a/source/blender/makesdna/DNA_scene_types.h +++ b/source/blender/makesdna/DNA_scene_types.h @@ -908,8 +908,6 @@ typedef struct ImagePaintSettings { /** Mode used for texture painting. */ int mode; - /** Wm handle. */ - void *paintcursor; /** Workaround until we support true layer masks. */ struct Image *stencil; /** Clone layer for image mode for projective texture painting. */ -- cgit v1.2.3