diff --git a/build_files/cmake/platform/platform_apple.cmake b/build_files/cmake/platform/platform_apple.cmake index 5cea7a418bd..3ae3b2b66b5 100644 --- a/build_files/cmake/platform/platform_apple.cmake +++ b/build_files/cmake/platform/platform_apple.cmake @@ -157,7 +157,7 @@ if(WITH_CODEC_FFMPEG) avcodec avdevice avformat avutil mp3lame swscale x264 xvidcore theora theoradec theoraenc - vorbis vorbisenc vorbisfile ogg + vorbis vorbisenc vorbisfile ogg opus vpx swresample) set(FFMPEG_LIBPATH ${FFMPEG}/lib) endif() diff --git a/build_files/utils/make_update.py b/build_files/utils/make_update.py index f845515bb3b..ec72514fdfc 100755 --- a/build_files/utils/make_update.py +++ b/build_files/utils/make_update.py @@ -161,7 +161,7 @@ def submodules_update(args, release_version, branch): ("release/scripts/addons", branch), ("release/scripts/addons_contrib", branch), ("release/datafiles/locale", branch), - ("source/tools", "master"), + ("source/tools", branch), ] # Initialize submodules only if needed. diff --git a/source/blender/blenkernel/intern/library.c b/source/blender/blenkernel/intern/library.c index 468d0e97ece..909db9c7b52 100644 --- a/source/blender/blenkernel/intern/library.c +++ b/source/blender/blenkernel/intern/library.c @@ -1468,8 +1468,12 @@ void BKE_libblock_copy_ex(Main *bmain, const ID *id, ID **r_newid, const int ori new_id->flag = (new_id->flag & ~copy_idflag_mask) | (id->flag & copy_idflag_mask); + /* We do not want any handling of usercount in code duplicating the data here, we do that all + * at once in id_copy_libmanagement_cb() at the end. */ + const int copy_data_flag = orig_flag | LIB_ID_CREATE_NO_USER_REFCOUNT; + if (id->properties) { - new_id->properties = IDP_CopyProperty_ex(id->properties, flag); + new_id->properties = IDP_CopyProperty_ex(id->properties, copy_data_flag); } /* XXX Again... We need a way to control what we copy in a much more refined way. @@ -1488,10 +1492,9 @@ void BKE_libblock_copy_ex(Main *bmain, const ID *id, ID **r_newid, const int ori if ((flag & LIB_ID_COPY_NO_ANIMDATA) == 0) { /* Note that even though horrors like root nodetrees are not in bmain, the actions they use * in their anim data *are* in bmain... super-mega-hooray. */ - int animdata_flag = orig_flag; - BLI_assert((animdata_flag & LIB_ID_COPY_ACTIONS) == 0 || - (animdata_flag & LIB_ID_CREATE_NO_MAIN) == 0); - iat->adt = BKE_animdata_copy(bmain, iat->adt, animdata_flag); + BLI_assert((copy_data_flag & LIB_ID_COPY_ACTIONS) == 0 || + (copy_data_flag & LIB_ID_CREATE_NO_MAIN) == 0); + iat->adt = BKE_animdata_copy(bmain, iat->adt, copy_data_flag); } else { iat->adt = NULL; diff --git a/source/blender/gpu/intern/gpu_element.c b/source/blender/gpu/intern/gpu_element.c index 166a6236893..518829d1c78 100644 --- a/source/blender/gpu/intern/gpu_element.c +++ b/source/blender/gpu/intern/gpu_element.c @@ -243,7 +243,7 @@ GPUIndexBuf *GPU_indexbuf_create_subrange(GPUIndexBuf *elem_src, uint start, uin { GPUIndexBuf *elem = MEM_callocN(sizeof(GPUIndexBuf), "GPUIndexBuf"); BLI_assert(elem_src && !elem_src->is_subrange); - BLI_assert(start + length <= elem_src->index_len); + BLI_assert((length == 0) || (start + length <= elem_src->index_len)); #if GPU_TRACK_INDEX_RANGE elem->index_type = elem_src->index_type; elem->gl_index_type = elem_src->gl_index_type; diff --git a/source/blender/windowmanager/intern/wm_operator_props.c b/source/blender/windowmanager/intern/wm_operator_props.c index 395de89c0da..21636153904 100644 --- a/source/blender/windowmanager/intern/wm_operator_props.c +++ b/source/blender/windowmanager/intern/wm_operator_props.c @@ -399,7 +399,7 @@ void WM_operator_properties_select_operation_simple(wmOperatorType *ot) void WM_operator_properties_generic_select(wmOperatorType *ot) { PropertyRNA *prop = RNA_def_boolean( - ot->srna, "wait_to_deselect_others", true, "Wait to Deselect Others", ""); + ot->srna, "wait_to_deselect_others", false, "Wait to Deselect Others", ""); RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); RNA_def_int(ot->srna, "mouse_x", 0, INT_MIN, INT_MAX, "Mouse X", "", INT_MIN, INT_MAX);