diff options
author | Campbell Barton <ideasman42@gmail.com> | 2018-02-02 06:15:29 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2018-02-02 06:15:29 +0300 |
commit | c3eb22e2ab0f4f96d64d1de7969966efd5d45066 (patch) | |
tree | d0472fa9bc46c4ed73fdd8c55e0e4a2616c3178f /source/blender | |
parent | 7003c8a143dea49a4e4ccc6b26283933d87f4a87 (diff) | |
parent | 88e69806b977a6ec97c807f5e97db3bf68cff759 (diff) |
Merge branch 'master' into blender2.8
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/collada/DocumentExporter.cpp | 8 | ||||
-rw-r--r-- | source/blender/editors/interface/view2d.c | 7 | ||||
-rw-r--r-- | source/blender/editors/object/object_vgroup.c | 179 | ||||
-rw-r--r-- | source/blender/editors/sculpt_paint/paint_vertex_proj.c | 17 |
4 files changed, 124 insertions, 87 deletions
diff --git a/source/blender/collada/DocumentExporter.cpp b/source/blender/collada/DocumentExporter.cpp index ce0c52cdcd1..6e84c3baccb 100644 --- a/source/blender/collada/DocumentExporter.cpp +++ b/source/blender/collada/DocumentExporter.cpp @@ -299,15 +299,15 @@ int DocumentExporter::exportCurrentScene(const EvaluationContext *eval_ctx, Scen // <library_visual_scenes> SceneExporter se(writer, &arm_exporter, this->export_settings); -#if 0 - /* The following code seems to be an obsolete workaround - Comment out until it proofs correct that we no longer need it. - */ // <library_animations> AnimationExporter ae(writer, this->export_settings); bool has_animations = ae.exportAnimations(eval_ctx, sce); +#if 0 + /* The following code seems to be an obsolete workaround + Comment out until it proofs correct that we no longer need it. + */ if (has_animations && this->export_settings->export_transformation_type == BC_TRANSFORMATION_TYPE_MATRIX) { // channels adressing <matrix> objects is not (yet) supported // So we force usage of <location>, <translation> and <scale> diff --git a/source/blender/editors/interface/view2d.c b/source/blender/editors/interface/view2d.c index a94ef0d1d5b..d31f2dec145 100644 --- a/source/blender/editors/interface/view2d.c +++ b/source/blender/editors/interface/view2d.c @@ -1027,6 +1027,13 @@ bool UI_view2d_tab_set(View2D *v2d, int tab) void UI_view2d_zoom_cache_reset(void) { + /* TODO(sergey): This way we avoid threading conflict with VSE rendering + * text strip. But ideally we want to make glyph cache to be fully safe + * for threading. + */ + if (G.is_rendering) { + return; + } /* While scaling we can accumulate fonts at many sizes (~20 or so). * Not an issue with embedded font, but can use over 500Mb with i18n ones! See [#38244]. */ diff --git a/source/blender/editors/object/object_vgroup.c b/source/blender/editors/object/object_vgroup.c index bf2da284591..8a172f86624 100644 --- a/source/blender/editors/object/object_vgroup.c +++ b/source/blender/editors/object/object_vgroup.c @@ -255,9 +255,10 @@ bool ED_vgroup_parray_alloc(ID *id, MDeformVert ***dvert_arr, int *dvert_tot, co * * \note \a dvert_array has mirrored weights filled in, incase cleanup operations are needed on both. */ -void ED_vgroup_parray_mirror_sync(Object *ob, - MDeformVert **dvert_array, const int dvert_tot, - const bool *vgroup_validmap, const int vgroup_tot) +void ED_vgroup_parray_mirror_sync( + Object *ob, + MDeformVert **dvert_array, const int dvert_tot, + const bool *vgroup_validmap, const int vgroup_tot) { BMEditMesh *em = BKE_editmesh_from_object(ob); MDeformVert **dvert_array_all = NULL; @@ -300,8 +301,9 @@ void ED_vgroup_parray_mirror_sync(Object *ob, * * similar to #ED_vgroup_parray_mirror_sync but only fill in mirror points. */ -void ED_vgroup_parray_mirror_assign(Object *ob, - MDeformVert **dvert_array, const int dvert_tot) +void ED_vgroup_parray_mirror_assign( + Object *ob, + MDeformVert **dvert_array, const int dvert_tot) { BMEditMesh *em = BKE_editmesh_from_object(ob); MDeformVert **dvert_array_all = NULL; @@ -332,9 +334,10 @@ void ED_vgroup_parray_mirror_assign(Object *ob, MEM_freeN(dvert_array_all); } -void ED_vgroup_parray_remove_zero(MDeformVert **dvert_array, const int dvert_tot, - const bool *vgroup_validmap, const int vgroup_tot, - const float epsilon, const bool keep_single) +void ED_vgroup_parray_remove_zero( + MDeformVert **dvert_array, const int dvert_tot, + const bool *vgroup_validmap, const int vgroup_tot, + const float epsilon, const bool keep_single) { MDeformVert *dv; int i; @@ -484,9 +487,10 @@ void ED_vgroup_parray_from_weight_array( /* TODO, cache flip data to speedup calls within a loop. */ -static void mesh_defvert_mirror_update_internal(Object *ob, - MDeformVert *dvert_dst, MDeformVert *dvert_src, - const int def_nr) +static void mesh_defvert_mirror_update_internal( + Object *ob, + MDeformVert *dvert_dst, MDeformVert *dvert_src, + const int def_nr) { if (def_nr == -1) { /* all vgroups, add groups where neded */ @@ -504,8 +508,9 @@ static void mesh_defvert_mirror_update_internal(Object *ob, } } -static void ED_mesh_defvert_mirror_update_em(Object *ob, BMVert *eve, int def_nr, int vidx, - const int cd_dvert_offset) +static void ED_mesh_defvert_mirror_update_em( + Object *ob, BMVert *eve, int def_nr, int vidx, + const int cd_dvert_offset) { Mesh *me = ob->data; BMEditMesh *em = me->edit_btmesh; @@ -713,26 +718,30 @@ const EnumPropertyItem *ED_object_vgroup_selection_itemf_helper( return item; } -static const EnumPropertyItem *rna_vertex_group_with_single_itemf(bContext *C, PointerRNA *ptr, - PropertyRNA *prop, bool *r_free) +static const EnumPropertyItem *rna_vertex_group_with_single_itemf( + bContext *C, PointerRNA *ptr, + PropertyRNA *prop, bool *r_free) { return ED_object_vgroup_selection_itemf_helper(C, ptr, prop, r_free, WT_VGROUP_MASK_ALL); } -static const EnumPropertyItem *rna_vertex_group_select_itemf(bContext *C, PointerRNA *ptr, - PropertyRNA *prop, bool *r_free) +static const EnumPropertyItem *rna_vertex_group_select_itemf( + bContext *C, PointerRNA *ptr, + PropertyRNA *prop, bool *r_free) { - return ED_object_vgroup_selection_itemf_helper(C, ptr, prop, r_free, WT_VGROUP_MASK_ALL & ~(1 << WT_VGROUP_ACTIVE)); + return ED_object_vgroup_selection_itemf_helper( + C, ptr, prop, r_free, WT_VGROUP_MASK_ALL & ~(1 << WT_VGROUP_ACTIVE)); } static void vgroup_operator_subset_select_props(wmOperatorType *ot, bool use_active) { PropertyRNA *prop; - prop = RNA_def_enum(ot->srna, - "group_select_mode", DummyRNA_NULL_items, - use_active ? WT_VGROUP_ACTIVE : WT_VGROUP_ALL, "Subset", - "Define which subset of Groups shall be used"); + prop = RNA_def_enum( + ot->srna, + "group_select_mode", DummyRNA_NULL_items, + use_active ? WT_VGROUP_ACTIVE : WT_VGROUP_ALL, "Subset", + "Define which subset of Groups shall be used"); if (use_active) { RNA_def_enum_funcs(prop, rna_vertex_group_with_single_itemf); @@ -749,9 +758,10 @@ static void vgroup_operator_subset_select_props(wmOperatorType *ot, bool use_act /* for Mesh in Object mode */ /* allows editmode for Lattice */ -static void ED_vgroup_nr_vert_add(Object *ob, - const int def_nr, const int vertnum, - const float weight, const int assignmode) +static void ED_vgroup_nr_vert_add( + Object *ob, + const int def_nr, const int vertnum, + const float weight, const int assignmode) { /* add the vert to the deform group with the * specified number @@ -1222,9 +1232,10 @@ static void getSingleCoordinate(MVert *points, int count, float coord[3]) * compute the amount of vertical distance relative to the plane and store it in dists, * then get the horizontal and vertical change and store them in changes */ -static void getVerticalAndHorizontalChange(const float norm[3], float d, const float coord[3], - const float start[3], float distToStart, - float *end, float (*changes)[2], float *dists, int index) +static void getVerticalAndHorizontalChange( + const float norm[3], float d, const float coord[3], + const float start[3], float distToStart, + float *end, float (*changes)[2], float *dists, int index) { /* A = Q - ((Q - P).N)N * D = (a * x0 + b * y0 +c * z0 + d) */ @@ -1275,8 +1286,9 @@ static DerivedMesh *dm_deform_recalc(EvaluationContext *eval_ctx, Scene *scene, * norm and d are the plane's properties for the equation: ax + by + cz + d = 0 * coord is a point on the plane */ -static void moveCloserToDistanceFromPlane(EvaluationContext *eval_ctx, Scene *scene, Object *ob, Mesh *me, int index, float norm[3], - float coord[3], float d, float distToBe, float strength, float cp) +static void moveCloserToDistanceFromPlane( + EvaluationContext *eval_ctx, Scene *scene, Object *ob, Mesh *me, int index, float norm[3], + float coord[3], float d, float distToBe, float strength, float cp) { DerivedMesh *dm; MDeformWeight *dw; @@ -1499,9 +1511,10 @@ static void vgroup_fix(const bContext *C, Scene *scene, Object *ob, float distTo } } -static void vgroup_levels_subset(Object *ob, const bool *vgroup_validmap, const int vgroup_tot, - const int UNUSED(subset_count), - const float offset, const float gain) +static void vgroup_levels_subset( + Object *ob, const bool *vgroup_validmap, const int vgroup_tot, + const int UNUSED(subset_count), + const float offset, const float gain) { MDeformWeight *dw; MDeformVert *dv, **dvert_array = NULL; @@ -1536,8 +1549,9 @@ static void vgroup_levels_subset(Object *ob, const bool *vgroup_validmap, const } if (use_mirror && use_vert_sel) { - ED_vgroup_parray_mirror_sync(ob, dvert_array, dvert_tot, - vgroup_validmap, vgroup_tot); + ED_vgroup_parray_mirror_sync( + ob, dvert_array, dvert_tot, + vgroup_validmap, vgroup_tot); } MEM_freeN(dvert_array); @@ -1594,12 +1608,14 @@ static bool vgroup_normalize_all( /* in case its not selected */ if ((dv = dvert_array[i])) { if (lock_flags) { - defvert_normalize_lock_map(dv, vgroup_validmap, vgroup_tot, - lock_flags, defbase_tot); + defvert_normalize_lock_map( + dv, vgroup_validmap, vgroup_tot, + lock_flags, defbase_tot); } else if (lock_active) { - defvert_normalize_lock_single(dv, vgroup_validmap, vgroup_tot, - def_nr); + defvert_normalize_lock_single( + dv, vgroup_validmap, vgroup_tot, + def_nr); } else { defvert_normalize_subset(dv, vgroup_validmap, vgroup_tot); @@ -1666,9 +1682,10 @@ static void vgroup_lock_all(Object *ob, int action) } } -static void vgroup_invert_subset(Object *ob, - const bool *vgroup_validmap, const int vgroup_tot, - const int UNUSED(subset_count), const bool auto_assign, const bool auto_remove) +static void vgroup_invert_subset( + Object *ob, + const bool *vgroup_validmap, const int vgroup_tot, + const int UNUSED(subset_count), const bool auto_assign, const bool auto_remove) { MDeformWeight *dw; MDeformVert *dv, **dvert_array = NULL; @@ -1707,14 +1724,16 @@ static void vgroup_invert_subset(Object *ob, } if (use_mirror && use_vert_sel) { - ED_vgroup_parray_mirror_sync(ob, dvert_array, dvert_tot, - vgroup_validmap, vgroup_tot); + ED_vgroup_parray_mirror_sync( + ob, dvert_array, dvert_tot, + vgroup_validmap, vgroup_tot); } if (auto_remove) { - ED_vgroup_parray_remove_zero(dvert_array, dvert_tot, - vgroup_validmap, vgroup_tot, - 0.0f, false); + ED_vgroup_parray_remove_zero( + dvert_array, dvert_tot, + vgroup_validmap, vgroup_tot, + 0.0f, false); } MEM_freeN(dvert_array); @@ -1934,8 +1953,9 @@ static void vgroup_smooth_subset( /* not so efficient to get 'dvert_array' again just so unselected verts are NULL'd */ if (use_mirror) { ED_vgroup_parray_alloc(ob->data, &dvert_array, &dvert_tot, true); - ED_vgroup_parray_mirror_sync(ob, dvert_array, dvert_tot, - vgroup_validmap, vgroup_tot); + ED_vgroup_parray_mirror_sync( + ob, dvert_array, dvert_tot, + vgroup_validmap, vgroup_tot); if (dvert_array) MEM_freeN(dvert_array); } @@ -1959,11 +1979,12 @@ static int inv_cmp_mdef_vert_weights(const void *a1, const void *a2) /* Used for limiting the number of influencing bones per vertex when exporting * skinned meshes. if all_deform_weights is True, limit all deform modifiers * to max_weights regardless of type, otherwise, only limit the number of influencing bones per vertex*/ -static int vgroup_limit_total_subset(Object *ob, - const bool *vgroup_validmap, - const int vgroup_tot, - const int subset_count, - const int max_weights) +static int vgroup_limit_total_subset( + Object *ob, + const bool *vgroup_validmap, + const int vgroup_tot, + const int subset_count, + const int max_weights) { MDeformVert *dv, **dvert_array = NULL; int i, dvert_tot = 0; @@ -2030,8 +2051,9 @@ static int vgroup_limit_total_subset(Object *ob, } -static void vgroup_clean_subset(Object *ob, const bool *vgroup_validmap, const int vgroup_tot, const int UNUSED(subset_count), - const float epsilon, const bool keep_single) +static void vgroup_clean_subset( + Object *ob, const bool *vgroup_validmap, const int vgroup_tot, const int UNUSED(subset_count), + const float epsilon, const bool keep_single) { MDeformVert **dvert_array = NULL; int dvert_tot = 0; @@ -2048,16 +2070,18 @@ static void vgroup_clean_subset(Object *ob, const bool *vgroup_validmap, const i ED_vgroup_parray_mirror_assign(ob, dvert_array, dvert_tot); } - ED_vgroup_parray_remove_zero(dvert_array, dvert_tot, - vgroup_validmap, vgroup_tot, - epsilon, keep_single); + ED_vgroup_parray_remove_zero( + dvert_array, dvert_tot, + vgroup_validmap, vgroup_tot, + epsilon, keep_single); MEM_freeN(dvert_array); } } -static void vgroup_quantize_subset(Object *ob, const bool *vgroup_validmap, const int vgroup_tot, const int UNUSED(subset_count), - const int steps) +static void vgroup_quantize_subset( + Object *ob, const bool *vgroup_validmap, const int vgroup_tot, const int UNUSED(subset_count), + const int steps) { MDeformVert **dvert_array = NULL; int dvert_tot = 0; @@ -2095,11 +2119,12 @@ static void vgroup_quantize_subset(Object *ob, const bool *vgroup_validmap, cons } } -static void dvert_mirror_op(MDeformVert *dvert, MDeformVert *dvert_mirr, - const char sel, const char sel_mirr, - const int *flip_map, const int flip_map_len, - const bool mirror_weights, const bool flip_vgroups, const bool all_vgroups, - const int act_vgroup) +static void dvert_mirror_op( + MDeformVert *dvert, MDeformVert *dvert_mirr, + const char sel, const char sel_mirr, + const int *flip_map, const int flip_map_len, + const bool mirror_weights, const bool flip_vgroups, const bool all_vgroups, + const int act_vgroup) { BLI_assert(sel || sel_mirr); @@ -2158,10 +2183,11 @@ static void dvert_mirror_op(MDeformVert *dvert, MDeformVert *dvert_mirr, /* TODO, vgroup locking */ /* TODO, face masking */ -void ED_vgroup_mirror(Object *ob, - const bool mirror_weights, const bool flip_vgroups, - const bool all_vgroups, const bool use_topology, - int *r_totmirr, int *r_totfail) +void ED_vgroup_mirror( + Object *ob, + const bool mirror_weights, const bool flip_vgroups, + const bool all_vgroups, const bool use_topology, + int *r_totmirr, int *r_totfail) { #define VGROUP_MIRR_OP \ @@ -3282,12 +3308,13 @@ static int vertex_group_mirror_exec(bContext *C, wmOperator *op) Object *ob = ED_object_context(C); int totmirr = 0, totfail = 0; - ED_vgroup_mirror(ob, - RNA_boolean_get(op->ptr, "mirror_weights"), - RNA_boolean_get(op->ptr, "flip_group_names"), - RNA_boolean_get(op->ptr, "all_groups"), - RNA_boolean_get(op->ptr, "use_topology"), - &totmirr, &totfail); + ED_vgroup_mirror( + ob, + RNA_boolean_get(op->ptr, "mirror_weights"), + RNA_boolean_get(op->ptr, "flip_group_names"), + RNA_boolean_get(op->ptr, "all_groups"), + RNA_boolean_get(op->ptr, "use_topology"), + &totmirr, &totfail); ED_mesh_report_mirror(op, totmirr, totfail); diff --git a/source/blender/editors/sculpt_paint/paint_vertex_proj.c b/source/blender/editors/sculpt_paint/paint_vertex_proj.c index 999c9dc7880..336f851d4c1 100644 --- a/source/blender/editors/sculpt_paint/paint_vertex_proj.c +++ b/source/blender/editors/sculpt_paint/paint_vertex_proj.c @@ -78,8 +78,9 @@ struct VertProjUpdate { /* -------------------------------------------------------------------- */ /* Internal Init */ -static void vpaint_proj_dm_map_cosnos_init__map_cb(void *userData, int index, const float co[3], - const float no_f[3], const short no_s[3]) +static void vpaint_proj_dm_map_cosnos_init__map_cb( + void *userData, int index, const float co[3], + const float no_f[3], const short no_s[3]) { struct VertProjHandle *vp_handle = userData; DMCoNo *co_no = &vp_handle->vcosnos[index]; @@ -131,8 +132,9 @@ static void vpaint_proj_dm_map_cosnos_init( /* Same as init but take mouse location into account */ -static void vpaint_proj_dm_map_cosnos_update__map_cb(void *userData, int index, const float co[3], - const float no_f[3], const short no_s[3]) +static void vpaint_proj_dm_map_cosnos_update__map_cb( + void *userData, int index, const float co[3], + const float no_f[3], const short no_s[3]) { struct VertProjUpdate *vp_update = userData; struct VertProjHandle *vp_handle = vp_update->vp_handle; @@ -144,9 +146,10 @@ static void vpaint_proj_dm_map_cosnos_update__map_cb(void *userData, int index, /* first find distance to this vertex */ float co_ss[2]; /* screenspace */ - if (ED_view3d_project_float_object(vp_update->ar, - co, co_ss, - V3D_PROJ_TEST_CLIP_BB | V3D_PROJ_TEST_CLIP_NEAR) == V3D_PROJ_RET_OK) + if (ED_view3d_project_float_object( + vp_update->ar, + co, co_ss, + V3D_PROJ_TEST_CLIP_BB | V3D_PROJ_TEST_CLIP_NEAR) == V3D_PROJ_RET_OK) { const float dist_sq = len_squared_v2v2(vp_update->mval_fl, co_ss); if (dist_sq > vp_handle->dists_sq[index]) { |