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:
authorCampbell Barton <ideasman42@gmail.com>2019-02-15 05:32:31 +0300
committerCampbell Barton <ideasman42@gmail.com>2019-02-15 05:32:31 +0300
commit90f6fd0a3651587b2f1e875b2537a5d007d77630 (patch)
tree7925714ce68249ff062c32c2fe5427b9ecaae238 /source/blender/windowmanager/gizmo/intern
parent796abc90a8ba27aa0da5808790a9607d08df61d0 (diff)
Fix T60905: Crash using smooth tool
Tools were relying on gizmos drawing to initialize their gizmos, now tool gizmos are initialized immediately.
Diffstat (limited to 'source/blender/windowmanager/gizmo/intern')
-rw-r--r--source/blender/windowmanager/gizmo/intern/wm_gizmo_group.c9
-rw-r--r--source/blender/windowmanager/gizmo/intern/wm_gizmo_intern.h1
-rw-r--r--source/blender/windowmanager/gizmo/intern/wm_gizmo_map.c2
3 files changed, 7 insertions, 5 deletions
diff --git a/source/blender/windowmanager/gizmo/intern/wm_gizmo_group.c b/source/blender/windowmanager/gizmo/intern/wm_gizmo_group.c
index 9dcd3dc6743..821b452175b 100644
--- a/source/blender/windowmanager/gizmo/intern/wm_gizmo_group.c
+++ b/source/blender/windowmanager/gizmo/intern/wm_gizmo_group.c
@@ -190,7 +190,7 @@ void wm_gizmogroup_intersectable_gizmos_to_list(const wmGizmoGroup *gzgroup, Lis
}
}
-void wm_gizmogroup_ensure_initialized(wmGizmoGroup *gzgroup, const bContext *C)
+void WM_gizmogroup_ensure_init(const bContext *C, wmGizmoGroup *gzgroup)
{
/* prepare for first draw */
if (UNLIKELY((gzgroup->init_flag & WM_GIZMOGROUP_INIT_SETUP) == 0)) {
@@ -806,7 +806,7 @@ void WM_gizmomaptype_group_init_runtime(
}
}
-void WM_gizmomaptype_group_init_runtime_with_region(
+wmGizmoGroup *WM_gizmomaptype_group_init_runtime_with_region(
wmGizmoMapType *gzmap_type,
wmGizmoGroupType *gzgt, ARegion *ar)
{
@@ -814,10 +814,13 @@ void WM_gizmomaptype_group_init_runtime_with_region(
BLI_assert(gzmap && gzmap->type == gzmap_type);
UNUSED_VARS_NDEBUG(gzmap_type);
- wm_gizmogroup_new_from_type(gzmap, gzgt);
+ wmGizmoGroup *gzgroup = wm_gizmogroup_new_from_type(gzmap, gzgt);
wm_gizmomap_highlight_set(gzmap, NULL, NULL, 0);
+
ED_region_tag_redraw(ar);
+
+ return gzgroup;
}
/**
diff --git a/source/blender/windowmanager/gizmo/intern/wm_gizmo_intern.h b/source/blender/windowmanager/gizmo/intern/wm_gizmo_intern.h
index b89e46b4ba5..eabe4cce975 100644
--- a/source/blender/windowmanager/gizmo/intern/wm_gizmo_intern.h
+++ b/source/blender/windowmanager/gizmo/intern/wm_gizmo_intern.h
@@ -67,7 +67,6 @@ struct wmGizmo *wm_gizmogroup_find_intersected_gizmo(
int *r_part);
void wm_gizmogroup_intersectable_gizmos_to_list(
const struct wmGizmoGroup *gzgroup, struct ListBase *listbase);
-void wm_gizmogroup_ensure_initialized(struct wmGizmoGroup *gzgroup, const struct bContext *C);
bool wm_gizmogroup_is_visible_in_drawstep(
const struct wmGizmoGroup *gzgroup, const eWM_GizmoFlagMapDrawStep drawstep);
diff --git a/source/blender/windowmanager/gizmo/intern/wm_gizmo_map.c b/source/blender/windowmanager/gizmo/intern/wm_gizmo_map.c
index b5081b0ebe9..824d36ec844 100644
--- a/source/blender/windowmanager/gizmo/intern/wm_gizmo_map.c
+++ b/source/blender/windowmanager/gizmo/intern/wm_gizmo_map.c
@@ -355,7 +355,7 @@ static void gizmomap_prepare_drawing(
gzgroup->init_flag &= ~WM_GIZMOGROUP_INIT_REFRESH;
}
/* Calls `setup`, `setup_keymap` and `refresh` if they're defined. */
- wm_gizmogroup_ensure_initialized(gzgroup, C);
+ WM_gizmogroup_ensure_init(C, gzgroup);
/* prepare drawing */
if (gzgroup->type->draw_prepare) {