Merge branch 'master' into blender2.8
This commit is contained in:
@@ -253,6 +253,8 @@ option(WITH_OPENSUBDIV "Enable OpenSubdiv for surface subdivision" _init_OPEN
|
|||||||
|
|
||||||
option(WITH_OPENVDB "Enable features relying on OpenVDB" OFF)
|
option(WITH_OPENVDB "Enable features relying on OpenVDB" OFF)
|
||||||
option(WITH_OPENVDB_BLOSC "Enable blosc compression for OpenVDB, only enable if OpenVDB was built with blosc support" OFF)
|
option(WITH_OPENVDB_BLOSC "Enable blosc compression for OpenVDB, only enable if OpenVDB was built with blosc support" OFF)
|
||||||
|
option(WITH_OPENVDB_3_ABI_COMPATIBLE "Assume OpenVDB library has been compiled with version 3 ABI compatibility" OFF)
|
||||||
|
mark_as_advanced(WITH_OPENVDB_3_ABI_COMPATIBLE)
|
||||||
|
|
||||||
# GHOST Windowing Library Options
|
# GHOST Windowing Library Options
|
||||||
option(WITH_GHOST_DEBUG "Enable debugging output for the GHOST library" OFF)
|
option(WITH_GHOST_DEBUG "Enable debugging output for the GHOST library" OFF)
|
||||||
@@ -1443,8 +1445,8 @@ elseif(CMAKE_C_COMPILER_ID MATCHES "Intel")
|
|||||||
ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_SIGN_COMPARE -Wno-sign-compare)
|
ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_SIGN_COMPARE -Wno-sign-compare)
|
||||||
|
|
||||||
# disable numbered, false positives
|
# disable numbered, false positives
|
||||||
set(C_WARNINGS "${C_WARNINGS} -wd188,186,144,913,556")
|
set(C_WARNINGS "${C_WARNINGS} -wd188,186,144,913,556,858,597,177,1292,167,279,592,94,2722,3199")
|
||||||
set(CXX_WARNINGS "${CXX_WARNINGS} -wd188,186,144,913,556")
|
set(CXX_WARNINGS "${CXX_WARNINGS} -wd188,186,144,913,556,858,597,177,1292,167,279,592,94,2722,3199")
|
||||||
elseif(CMAKE_C_COMPILER_ID MATCHES "MSVC")
|
elseif(CMAKE_C_COMPILER_ID MATCHES "MSVC")
|
||||||
# most msvc warnings are C & C++
|
# most msvc warnings are C & C++
|
||||||
set(_WARNINGS
|
set(_WARNINGS
|
||||||
|
@@ -822,7 +822,7 @@ macro(TEST_SSE_SUPPORT
|
|||||||
endif()
|
endif()
|
||||||
elseif(CMAKE_C_COMPILER_ID MATCHES "Intel")
|
elseif(CMAKE_C_COMPILER_ID MATCHES "Intel")
|
||||||
set(${_sse_flags} "") # icc defaults to -msse
|
set(${_sse_flags} "") # icc defaults to -msse
|
||||||
set(${_sse2_flags} "-msse2")
|
set(${_sse2_flags} "") # icc defaults to -msse2
|
||||||
else()
|
else()
|
||||||
message(WARNING "SSE flags for this compiler: '${CMAKE_C_COMPILER_ID}' not known")
|
message(WARNING "SSE flags for this compiler: '${CMAKE_C_COMPILER_ID}' not known")
|
||||||
set(${_sse_flags})
|
set(${_sse_flags})
|
||||||
|
@@ -104,6 +104,54 @@ elseif(CMAKE_COMPILER_IS_GNUCC OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang"))
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CYCLES_KERNEL_FLAGS}")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CYCLES_KERNEL_FLAGS}")
|
||||||
|
elseif(WIN32 AND CMAKE_CXX_COMPILER_ID MATCHES "Intel")
|
||||||
|
check_cxx_compiler_flag(/QxSSE2 CXX_HAS_SSE)
|
||||||
|
check_cxx_compiler_flag(/arch:AVX CXX_HAS_AVX)
|
||||||
|
check_cxx_compiler_flag(/QxCORE-AVX2 CXX_HAS_AVX2)
|
||||||
|
|
||||||
|
if(CXX_HAS_SSE)
|
||||||
|
set(CYCLES_SSE2_KERNEL_FLAGS "/QxSSE2")
|
||||||
|
set(CYCLES_SSE3_KERNEL_FLAGS "/QxSSSE3")
|
||||||
|
set(CYCLES_SSE41_KERNEL_FLAGS "/QxSSE4.1")
|
||||||
|
|
||||||
|
if(CXX_HAS_AVX)
|
||||||
|
set(CYCLES_AVX_KERNEL_FLAGS "/arch:AVX")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(CXX_HAS_AVX2)
|
||||||
|
set(CYCLES_AVX2_KERNEL_FLAGS "/QxCORE-AVX2")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
elseif(CMAKE_CXX_COMPILER_ID MATCHES "Intel")
|
||||||
|
if(APPLE)
|
||||||
|
# ICC does not support SSE2 flag on MacOSX
|
||||||
|
check_cxx_compiler_flag(-xssse3 CXX_HAS_SSE)
|
||||||
|
else()
|
||||||
|
check_cxx_compiler_flag(-xsse2 CXX_HAS_SSE)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
check_cxx_compiler_flag(-xavx CXX_HAS_AVX)
|
||||||
|
check_cxx_compiler_flag(-xcore-avx2 CXX_HAS_AVX2)
|
||||||
|
|
||||||
|
if(CXX_HAS_SSE)
|
||||||
|
if(APPLE)
|
||||||
|
# ICC does not support SSE2 flag on MacOSX
|
||||||
|
set(CYCLES_SSE2_KERNEL_FLAGS "-xssse3")
|
||||||
|
else()
|
||||||
|
set(CYCLES_SSE2_KERNEL_FLAGS "-xsse2")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(CYCLES_SSE3_KERNEL_FLAGS "-xssse3")
|
||||||
|
set(CYCLES_SSE41_KERNEL_FLAGS "-xsse4.1")
|
||||||
|
|
||||||
|
if(CXX_HAS_AVX)
|
||||||
|
set(CYCLES_AVX_KERNEL_FLAGS "-xavx")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(CXX_HAS_AVX2)
|
||||||
|
set(CYCLES_AVX2_KERNEL_FLAGS "-xcore-avx2")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(CXX_HAS_SSE)
|
if(CXX_HAS_SSE)
|
||||||
|
@@ -34,7 +34,6 @@ struct ccl_try_align(16) float4 {
|
|||||||
};
|
};
|
||||||
|
|
||||||
__forceinline float4();
|
__forceinline float4();
|
||||||
__forceinline float4(const float4& a);
|
|
||||||
__forceinline explicit float4(const __m128& a);
|
__forceinline explicit float4(const __m128& a);
|
||||||
|
|
||||||
__forceinline operator const __m128&(void) const;
|
__forceinline operator const __m128&(void) const;
|
||||||
|
@@ -33,11 +33,6 @@ __forceinline float4::float4()
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
__forceinline float4::float4(const float4& a)
|
|
||||||
: m128(a.m128)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
__forceinline float4::float4(const __m128& a)
|
__forceinline float4::float4(const __m128& a)
|
||||||
: m128(a)
|
: m128(a)
|
||||||
{
|
{
|
||||||
|
@@ -38,8 +38,13 @@ set(SRC
|
|||||||
if(WITH_OPENVDB)
|
if(WITH_OPENVDB)
|
||||||
add_definitions(
|
add_definitions(
|
||||||
-DWITH_OPENVDB
|
-DWITH_OPENVDB
|
||||||
|
)
|
||||||
|
|
||||||
|
if(WITH_OPENVDB_3_ABI_COMPATIBLE)
|
||||||
|
add_definitions(
|
||||||
-DOPENVDB_3_ABI_COMPATIBLE
|
-DOPENVDB_3_ABI_COMPATIBLE
|
||||||
)
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
list(APPEND INC_SYS
|
list(APPEND INC_SYS
|
||||||
${BOOST_INCLUDE_DIR}
|
${BOOST_INCLUDE_DIR}
|
||||||
|
@@ -45,7 +45,7 @@ void OpenVDBWriter::insert(const openvdb::GridBase::Ptr &grid)
|
|||||||
|
|
||||||
void OpenVDBWriter::insert(const openvdb::GridBase &grid)
|
void OpenVDBWriter::insert(const openvdb::GridBase &grid)
|
||||||
{
|
{
|
||||||
#if (OPENVDB_LIBRARY_MAJOR_VERSION_NUMBER >= 3)
|
#if (OPENVDB_LIBRARY_MAJOR_VERSION_NUMBER <= 3) || defined(OPENVDB_3_ABI_COMPATIBLE)
|
||||||
m_grids->push_back(grid.copyGrid());
|
m_grids->push_back(grid.copyGrid());
|
||||||
#else
|
#else
|
||||||
m_grids->push_back(grid.copyGridWithNewTree());
|
m_grids->push_back(grid.copyGridWithNewTree());
|
||||||
|
@@ -299,7 +299,10 @@ bool BKE_displist_surfindex_get(DispList *dl, int a, int *b, int *p1, int *p2, i
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* ****************** make displists ********************* */
|
/* ****************** make displists ********************* */
|
||||||
|
#ifdef __INTEL_COMPILER
|
||||||
|
/* ICC with the optimization -02 causes crashes. */
|
||||||
|
# pragma intel optimization_level 1
|
||||||
|
#endif
|
||||||
static void curve_to_displist(Curve *cu, ListBase *nubase, ListBase *dispbase,
|
static void curve_to_displist(Curve *cu, ListBase *nubase, ListBase *dispbase,
|
||||||
const bool for_render, const bool use_render_resolution)
|
const bool for_render, const bool use_render_resolution)
|
||||||
{
|
{
|
||||||
|
@@ -411,7 +411,7 @@ extern "C" {
|
|||||||
} (void)0
|
} (void)0
|
||||||
|
|
||||||
/* assuming a static array */
|
/* assuming a static array */
|
||||||
#if defined(__GNUC__) && !defined(__cplusplus) && !defined(__clang__)
|
#if defined(__GNUC__) && !defined(__cplusplus) && !defined(__clang__) && !defined(__INTEL_COMPILER)
|
||||||
# define ARRAY_SIZE(arr) \
|
# define ARRAY_SIZE(arr) \
|
||||||
((sizeof(struct {int isnt_array : ((const void *)&(arr) == &(arr)[0]);}) * 0) + \
|
((sizeof(struct {int isnt_array : ((const void *)&(arr) == &(arr)[0]);}) * 0) + \
|
||||||
(sizeof(arr) / sizeof(*(arr))))
|
(sizeof(arr) / sizeof(*(arr))))
|
||||||
|
@@ -46,7 +46,6 @@
|
|||||||
|
|
||||||
#include "PIL_time.h"
|
#include "PIL_time.h"
|
||||||
|
|
||||||
#include "BKE_main.h"
|
|
||||||
#include "BKE_paint.h"
|
#include "BKE_paint.h"
|
||||||
#include "BKE_gpencil.h"
|
#include "BKE_gpencil.h"
|
||||||
#include "BKE_context.h"
|
#include "BKE_context.h"
|
||||||
|
@@ -45,7 +45,6 @@
|
|||||||
#include "BKE_context.h"
|
#include "BKE_context.h"
|
||||||
#include "BKE_global.h"
|
#include "BKE_global.h"
|
||||||
#include "BKE_gpencil.h"
|
#include "BKE_gpencil.h"
|
||||||
#include "BKE_main.h"
|
|
||||||
|
|
||||||
#include "ED_gpencil.h"
|
#include "ED_gpencil.h"
|
||||||
|
|
||||||
|
@@ -51,6 +51,8 @@ void ED_undo_operator_repeat_cb_evt(struct bContext *C, void *arg_op, int arg
|
|||||||
|
|
||||||
bool ED_undo_is_valid(const struct bContext *C, const char *undoname);
|
bool ED_undo_is_valid(const struct bContext *C, const char *undoname);
|
||||||
|
|
||||||
|
struct UndoStack *ED_undo_stack_get(void);
|
||||||
|
|
||||||
/* undo_system_types.c */
|
/* undo_system_types.c */
|
||||||
void ED_undosys_type_init(void);
|
void ED_undosys_type_init(void);
|
||||||
void ED_undosys_type_free(void);
|
void ED_undosys_type_free(void);
|
||||||
|
@@ -36,7 +36,6 @@
|
|||||||
#include "BLI_listbase.h"
|
#include "BLI_listbase.h"
|
||||||
|
|
||||||
#include "BKE_context.h"
|
#include "BKE_context.h"
|
||||||
#include "BKE_main.h"
|
|
||||||
#include "BKE_object.h"
|
#include "BKE_object.h"
|
||||||
#include "BKE_report.h"
|
#include "BKE_report.h"
|
||||||
#include "BKE_editmesh.h"
|
#include "BKE_editmesh.h"
|
||||||
|
@@ -43,7 +43,6 @@
|
|||||||
|
|
||||||
#include "BKE_DerivedMesh.h"
|
#include "BKE_DerivedMesh.h"
|
||||||
#include "BKE_context.h"
|
#include "BKE_context.h"
|
||||||
#include "BKE_main.h"
|
|
||||||
#include "BKE_mesh.h"
|
#include "BKE_mesh.h"
|
||||||
#include "BKE_mesh_mapping.h"
|
#include "BKE_mesh_mapping.h"
|
||||||
#include "BKE_report.h"
|
#include "BKE_report.h"
|
||||||
|
@@ -4436,6 +4436,7 @@ void PE_create_particle_edit(
|
|||||||
recalc_lengths(edit);
|
recalc_lengths(edit);
|
||||||
if (psys && !cache)
|
if (psys && !cache)
|
||||||
recalc_emitter_field(ob, psys);
|
recalc_emitter_field(ob, psys);
|
||||||
|
|
||||||
PE_update_object(eval_ctx, scene, ob, 1);
|
PE_update_object(eval_ctx, scene, ob, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -44,11 +44,9 @@
|
|||||||
#include "BLI_string.h"
|
#include "BLI_string.h"
|
||||||
#include "BLI_utildefines.h"
|
#include "BLI_utildefines.h"
|
||||||
|
|
||||||
#include "BKE_global.h"
|
|
||||||
#include "BKE_particle.h"
|
#include "BKE_particle.h"
|
||||||
#include "BKE_pointcache.h"
|
#include "BKE_pointcache.h"
|
||||||
#include "BKE_context.h"
|
#include "BKE_context.h"
|
||||||
#include "BKE_main.h"
|
|
||||||
#include "BKE_undo_system.h"
|
#include "BKE_undo_system.h"
|
||||||
|
|
||||||
#include "DEG_depsgraph.h"
|
#include "DEG_depsgraph.h"
|
||||||
|
@@ -48,7 +48,6 @@
|
|||||||
#include "BKE_context.h"
|
#include "BKE_context.h"
|
||||||
#include "BKE_customdata.h"
|
#include "BKE_customdata.h"
|
||||||
#include "BKE_fluidsim.h"
|
#include "BKE_fluidsim.h"
|
||||||
#include "BKE_main.h"
|
|
||||||
#include "BKE_modifier.h"
|
#include "BKE_modifier.h"
|
||||||
#include "BKE_object.h"
|
#include "BKE_object.h"
|
||||||
#include "BKE_report.h"
|
#include "BKE_report.h"
|
||||||
|
@@ -34,11 +34,10 @@
|
|||||||
|
|
||||||
#include "BKE_context.h"
|
#include "BKE_context.h"
|
||||||
#include "BKE_paint.h"
|
#include "BKE_paint.h"
|
||||||
#include "BKE_global.h"
|
|
||||||
#include "BKE_main.h"
|
|
||||||
#include "BKE_undo_system.h"
|
#include "BKE_undo_system.h"
|
||||||
|
|
||||||
#include "ED_paint.h"
|
#include "ED_paint.h"
|
||||||
|
#include "ED_undo.h"
|
||||||
|
|
||||||
#include "WM_api.h"
|
#include "WM_api.h"
|
||||||
#include "WM_types.h"
|
#include "WM_types.h"
|
||||||
@@ -155,15 +154,15 @@ void ED_paintcurve_undosys_type(UndoType *ut)
|
|||||||
|
|
||||||
void ED_paintcurve_undo_push_begin(const char *name)
|
void ED_paintcurve_undo_push_begin(const char *name)
|
||||||
{
|
{
|
||||||
|
UndoStack *ustack = ED_undo_stack_get();
|
||||||
bContext *C = NULL; /* special case, we never read from this. */
|
bContext *C = NULL; /* special case, we never read from this. */
|
||||||
wmWindowManager *wm = G.main->wm.first;
|
BKE_undosys_step_push_init_with_type(ustack, C, name, BKE_UNDOSYS_TYPE_PAINTCURVE);
|
||||||
BKE_undosys_step_push_init_with_type(wm->undo_stack, C, name, BKE_UNDOSYS_TYPE_PAINTCURVE);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ED_paintcurve_undo_push_end(void)
|
void ED_paintcurve_undo_push_end(void)
|
||||||
{
|
{
|
||||||
wmWindowManager *wm = G.main->wm.first; /* XXX, avoids adding extra arg. */
|
UndoStack *ustack = ED_undo_stack_get();
|
||||||
BKE_undosys_step_push(wm->undo_stack, NULL, NULL);
|
BKE_undosys_step_push(ustack, NULL, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** \} */
|
/** \} */
|
||||||
|
@@ -41,12 +41,12 @@
|
|||||||
#include "BKE_context.h"
|
#include "BKE_context.h"
|
||||||
#include "BKE_image.h"
|
#include "BKE_image.h"
|
||||||
#include "BKE_main.h"
|
#include "BKE_main.h"
|
||||||
#include "BKE_global.h"
|
|
||||||
#include "BKE_undo_system.h"
|
#include "BKE_undo_system.h"
|
||||||
|
|
||||||
#include "DEG_depsgraph.h"
|
#include "DEG_depsgraph.h"
|
||||||
|
|
||||||
#include "ED_paint.h"
|
#include "ED_paint.h"
|
||||||
|
#include "ED_undo.h"
|
||||||
|
|
||||||
#include "GPU_draw.h"
|
#include "GPU_draw.h"
|
||||||
|
|
||||||
@@ -360,15 +360,15 @@ static void image_undo_free_list(ListBase *lb)
|
|||||||
|
|
||||||
void ED_image_undo_push_begin(const char *name)
|
void ED_image_undo_push_begin(const char *name)
|
||||||
{
|
{
|
||||||
|
UndoStack *ustack = ED_undo_stack_get();
|
||||||
bContext *C = NULL; /* special case, we never read from this. */
|
bContext *C = NULL; /* special case, we never read from this. */
|
||||||
wmWindowManager *wm = G.main->wm.first;
|
BKE_undosys_step_push_init_with_type(ustack, C, name, BKE_UNDOSYS_TYPE_IMAGE);
|
||||||
BKE_undosys_step_push_init_with_type(wm->undo_stack, C, name, BKE_UNDOSYS_TYPE_IMAGE);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ED_image_undo_push_end(void)
|
void ED_image_undo_push_end(void)
|
||||||
{
|
{
|
||||||
wmWindowManager *wm = G.main->wm.first; /* XXX, avoids adding extra arg. */
|
UndoStack *ustack = ED_undo_stack_get();
|
||||||
BKE_undosys_step_push(wm->undo_stack, NULL, NULL);
|
BKE_undosys_step_push(ustack, NULL, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void image_undo_invalidate(void)
|
static void image_undo_invalidate(void)
|
||||||
@@ -489,8 +489,8 @@ ListBase *ED_image_undosys_step_get_tiles(UndoStep *us_p)
|
|||||||
|
|
||||||
ListBase *ED_image_undo_get_tiles(void)
|
ListBase *ED_image_undo_get_tiles(void)
|
||||||
{
|
{
|
||||||
wmWindowManager *wm = G.main->wm.first; /* XXX, avoids adding extra arg. */
|
UndoStack *ustack = ED_undo_stack_get();
|
||||||
UndoStep *us = BKE_undosys_stack_init_or_active_with_type(wm->undo_stack, BKE_UNDOSYS_TYPE_IMAGE);
|
UndoStep *us = BKE_undosys_stack_init_or_active_with_type(ustack, BKE_UNDOSYS_TYPE_IMAGE);
|
||||||
return ED_image_undosys_step_get_tiles(us);
|
return ED_image_undosys_step_get_tiles(us);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -59,11 +59,10 @@
|
|||||||
#include "BKE_key.h"
|
#include "BKE_key.h"
|
||||||
#include "BKE_mesh.h"
|
#include "BKE_mesh.h"
|
||||||
#include "BKE_subsurf.h"
|
#include "BKE_subsurf.h"
|
||||||
#include "DEG_depsgraph.h"
|
|
||||||
#include "BKE_global.h"
|
|
||||||
#include "BKE_main.h"
|
|
||||||
#include "BKE_undo_system.h"
|
#include "BKE_undo_system.h"
|
||||||
|
|
||||||
|
#include "DEG_depsgraph.h"
|
||||||
|
|
||||||
#include "WM_api.h"
|
#include "WM_api.h"
|
||||||
#include "WM_types.h"
|
#include "WM_types.h"
|
||||||
|
|
||||||
@@ -72,6 +71,7 @@
|
|||||||
#include "ED_paint.h"
|
#include "ED_paint.h"
|
||||||
#include "ED_object.h"
|
#include "ED_object.h"
|
||||||
#include "ED_sculpt.h"
|
#include "ED_sculpt.h"
|
||||||
|
#include "ED_undo.h"
|
||||||
|
|
||||||
#include "bmesh.h"
|
#include "bmesh.h"
|
||||||
#include "paint_intern.h"
|
#include "paint_intern.h"
|
||||||
@@ -981,9 +981,9 @@ SculptUndoNode *sculpt_undo_push_node(
|
|||||||
|
|
||||||
void sculpt_undo_push_begin(const char *name)
|
void sculpt_undo_push_begin(const char *name)
|
||||||
{
|
{
|
||||||
|
UndoStack *ustack = ED_undo_stack_get();
|
||||||
bContext *C = NULL; /* special case, we never read from this. */
|
bContext *C = NULL; /* special case, we never read from this. */
|
||||||
wmWindowManager *wm = G.main->wm.first;
|
BKE_undosys_step_push_init_with_type(ustack, C, name, BKE_UNDOSYS_TYPE_SCULPT);
|
||||||
BKE_undosys_step_push_init_with_type(wm->undo_stack, C, name, BKE_UNDOSYS_TYPE_SCULPT);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void sculpt_undo_push_end(void)
|
void sculpt_undo_push_end(void)
|
||||||
@@ -1002,8 +1002,8 @@ void sculpt_undo_push_end(void)
|
|||||||
BKE_pbvh_node_layer_disp_free(unode->node);
|
BKE_pbvh_node_layer_disp_free(unode->node);
|
||||||
}
|
}
|
||||||
|
|
||||||
wmWindowManager *wm = G.main->wm.first; /* XXX, avoids adding extra arg. */
|
UndoStack *ustack = ED_undo_stack_get();
|
||||||
BKE_undosys_step_push(wm->undo_stack, NULL, NULL);
|
BKE_undosys_step_push(ustack, NULL, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------------------------------- */
|
/* -------------------------------------------------------------------- */
|
||||||
@@ -1091,8 +1091,8 @@ static UndoSculpt *sculpt_undosys_step_get_nodes(UndoStep *us_p)
|
|||||||
|
|
||||||
static UndoSculpt *sculpt_undo_get_nodes(void)
|
static UndoSculpt *sculpt_undo_get_nodes(void)
|
||||||
{
|
{
|
||||||
wmWindowManager *wm = G.main->wm.first; /* XXX, avoids adding extra arg. */
|
UndoStack *ustack = ED_undo_stack_get();
|
||||||
UndoStep *us = BKE_undosys_stack_init_or_active_with_type(wm->undo_stack, BKE_UNDOSYS_TYPE_SCULPT);
|
UndoStep *us = BKE_undosys_stack_init_or_active_with_type(ustack, BKE_UNDOSYS_TYPE_SCULPT);
|
||||||
return sculpt_undosys_step_get_nodes(us);
|
return sculpt_undosys_step_get_nodes(us);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -49,7 +49,6 @@
|
|||||||
#include "BKE_context.h"
|
#include "BKE_context.h"
|
||||||
#include "BKE_curve.h"
|
#include "BKE_curve.h"
|
||||||
#include "BKE_fcurve.h"
|
#include "BKE_fcurve.h"
|
||||||
#include "BKE_main.h"
|
|
||||||
#include "BKE_screen.h"
|
#include "BKE_screen.h"
|
||||||
#include "BKE_unit.h"
|
#include "BKE_unit.h"
|
||||||
|
|
||||||
|
@@ -56,7 +56,6 @@
|
|||||||
#include "BKE_fcurve.h"
|
#include "BKE_fcurve.h"
|
||||||
#include "BKE_library.h"
|
#include "BKE_library.h"
|
||||||
#include "BKE_key.h"
|
#include "BKE_key.h"
|
||||||
#include "BKE_main.h"
|
|
||||||
#include "BKE_nla.h"
|
#include "BKE_nla.h"
|
||||||
#include "BKE_scene.h"
|
#include "BKE_scene.h"
|
||||||
#include "BKE_context.h"
|
#include "BKE_context.h"
|
||||||
|
@@ -59,7 +59,6 @@
|
|||||||
#include "BKE_global.h"
|
#include "BKE_global.h"
|
||||||
#include "BKE_library.h"
|
#include "BKE_library.h"
|
||||||
#include "BKE_key.h"
|
#include "BKE_key.h"
|
||||||
#include "BKE_main.h"
|
|
||||||
#include "BKE_nla.h"
|
#include "BKE_nla.h"
|
||||||
#include "BKE_context.h"
|
#include "BKE_context.h"
|
||||||
#include "BKE_report.h"
|
#include "BKE_report.h"
|
||||||
|
@@ -38,7 +38,6 @@
|
|||||||
|
|
||||||
#include "BKE_context.h"
|
#include "BKE_context.h"
|
||||||
#include "BKE_library.h"
|
#include "BKE_library.h"
|
||||||
#include "BKE_main.h"
|
|
||||||
#include "BKE_report.h"
|
#include "BKE_report.h"
|
||||||
#include "BKE_text.h"
|
#include "BKE_text.h"
|
||||||
#include "BKE_undo_system.h"
|
#include "BKE_undo_system.h"
|
||||||
|
@@ -42,6 +42,7 @@
|
|||||||
#include "BKE_blender_undo.h"
|
#include "BKE_blender_undo.h"
|
||||||
#include "BKE_context.h"
|
#include "BKE_context.h"
|
||||||
#include "BKE_global.h"
|
#include "BKE_global.h"
|
||||||
|
#include "BKE_main.h"
|
||||||
#include "BKE_screen.h"
|
#include "BKE_screen.h"
|
||||||
#include "BKE_undo_system.h"
|
#include "BKE_undo_system.h"
|
||||||
|
|
||||||
@@ -190,6 +191,19 @@ bool ED_undo_is_valid(const bContext *C, const char *undoname)
|
|||||||
return BKE_undosys_stack_has_undo(wm->undo_stack, undoname);
|
return BKE_undosys_stack_has_undo(wm->undo_stack, undoname);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Ideally we wont access the stack directly,
|
||||||
|
* this is needed for modes which handle undo themselves (bypassing #ED_undo_push).
|
||||||
|
*
|
||||||
|
* Using global isn't great, this just avoids doing inline,
|
||||||
|
* causing 'BKE_global.h' & 'BKE_main.h' includes.
|
||||||
|
*/
|
||||||
|
UndoStack *ED_undo_stack_get(void)
|
||||||
|
{
|
||||||
|
wmWindowManager *wm = G.main->wm.first;
|
||||||
|
return wm->undo_stack;
|
||||||
|
}
|
||||||
|
|
||||||
/** \} */
|
/** \} */
|
||||||
|
|
||||||
/* -------------------------------------------------------------------- */
|
/* -------------------------------------------------------------------- */
|
||||||
|
@@ -380,13 +380,13 @@ struct ImBuf *IMB_onehalf(struct ImBuf *ibuf1);
|
|||||||
*
|
*
|
||||||
* \attention Defined in scaling.c
|
* \attention Defined in scaling.c
|
||||||
*/
|
*/
|
||||||
struct ImBuf *IMB_scaleImBuf(struct ImBuf *ibuf, unsigned int newx, unsigned int newy);
|
bool IMB_scaleImBuf(struct ImBuf *ibuf, unsigned int newx, unsigned int newy);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* \attention Defined in scaling.c
|
* \attention Defined in scaling.c
|
||||||
*/
|
*/
|
||||||
struct ImBuf *IMB_scalefastImBuf(struct ImBuf *ibuf, unsigned int newx, unsigned int newy);
|
bool IMB_scalefastImBuf(struct ImBuf *ibuf, unsigned int newx, unsigned int newy);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@@ -399,7 +399,7 @@ void IMB_scaleImBuf_threaded(struct ImBuf *ibuf, unsigned int newx, unsigned int
|
|||||||
* \attention Defined in writeimage.c
|
* \attention Defined in writeimage.c
|
||||||
*/
|
*/
|
||||||
short IMB_saveiff(struct ImBuf *ibuf, const char *filepath, int flags);
|
short IMB_saveiff(struct ImBuf *ibuf, const char *filepath, int flags);
|
||||||
struct ImBuf *IMB_prepare_write_ImBuf(const bool isfloat, struct ImBuf *ibuf);
|
bool IMB_prepare_write_ImBuf(const bool isfloat, struct ImBuf *ibuf);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@@ -1550,12 +1550,17 @@ static void scalefast_Z_ImBuf(ImBuf *ibuf, int newx, int newy)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
struct ImBuf *IMB_scaleImBuf(struct ImBuf *ibuf, unsigned int newx, unsigned int newy)
|
/**
|
||||||
|
* Return true if \a ibuf is modified.
|
||||||
|
*/
|
||||||
|
bool IMB_scaleImBuf(struct ImBuf *ibuf, unsigned int newx, unsigned int newy)
|
||||||
{
|
{
|
||||||
if (ibuf == NULL) return (NULL);
|
if (ibuf == NULL) return false;
|
||||||
if (ibuf->rect == NULL && ibuf->rect_float == NULL) return (ibuf);
|
if (ibuf->rect == NULL && ibuf->rect_float == NULL) return false;
|
||||||
|
|
||||||
if (newx == ibuf->x && newy == ibuf->y) { return ibuf; }
|
if (newx == ibuf->x && newy == ibuf->y) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/* scaleup / scaledown functions below change ibuf->x and ibuf->y
|
/* scaleup / scaledown functions below change ibuf->x and ibuf->y
|
||||||
* so we first scale the Z-buffer (if any) */
|
* so we first scale the Z-buffer (if any) */
|
||||||
@@ -1564,7 +1569,7 @@ struct ImBuf *IMB_scaleImBuf(struct ImBuf *ibuf, unsigned int newx, unsigned int
|
|||||||
/* try to scale common cases in a fast way */
|
/* try to scale common cases in a fast way */
|
||||||
/* disabled, quality loss is unacceptable, see report #18609 (ton) */
|
/* disabled, quality loss is unacceptable, see report #18609 (ton) */
|
||||||
if (0 && q_scale_linear_interpolation(ibuf, newx, newy)) {
|
if (0 && q_scale_linear_interpolation(ibuf, newx, newy)) {
|
||||||
return ibuf;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (newx && (newx < ibuf->x)) scaledownx(ibuf, newx);
|
if (newx && (newx < ibuf->x)) scaledownx(ibuf, newx);
|
||||||
@@ -1572,14 +1577,17 @@ struct ImBuf *IMB_scaleImBuf(struct ImBuf *ibuf, unsigned int newx, unsigned int
|
|||||||
if (newx && (newx > ibuf->x)) scaleupx(ibuf, newx);
|
if (newx && (newx > ibuf->x)) scaleupx(ibuf, newx);
|
||||||
if (newy && (newy > ibuf->y)) scaleupy(ibuf, newy);
|
if (newy && (newy > ibuf->y)) scaleupy(ibuf, newy);
|
||||||
|
|
||||||
return(ibuf);
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct imbufRGBA {
|
struct imbufRGBA {
|
||||||
float r, g, b, a;
|
float r, g, b, a;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ImBuf *IMB_scalefastImBuf(struct ImBuf *ibuf, unsigned int newx, unsigned int newy)
|
/**
|
||||||
|
* Return true if \a ibuf is modified.
|
||||||
|
*/
|
||||||
|
bool IMB_scalefastImBuf(struct ImBuf *ibuf, unsigned int newx, unsigned int newy)
|
||||||
{
|
{
|
||||||
unsigned int *rect, *_newrect, *newrect;
|
unsigned int *rect, *_newrect, *newrect;
|
||||||
struct imbufRGBA *rectf, *_newrectf, *newrectf;
|
struct imbufRGBA *rectf, *_newrectf, *newrectf;
|
||||||
@@ -1590,16 +1598,16 @@ struct ImBuf *IMB_scalefastImBuf(struct ImBuf *ibuf, unsigned int newx, unsigned
|
|||||||
rect = NULL; _newrect = NULL; newrect = NULL;
|
rect = NULL; _newrect = NULL; newrect = NULL;
|
||||||
rectf = NULL; _newrectf = NULL; newrectf = NULL;
|
rectf = NULL; _newrectf = NULL; newrectf = NULL;
|
||||||
|
|
||||||
if (ibuf == NULL) return(NULL);
|
if (ibuf == NULL) return false;
|
||||||
if (ibuf->rect) do_rect = true;
|
if (ibuf->rect) do_rect = true;
|
||||||
if (ibuf->rect_float) do_float = true;
|
if (ibuf->rect_float) do_float = true;
|
||||||
if (do_rect == false && do_float == false) return(ibuf);
|
if (do_rect == false && do_float == false) return false;
|
||||||
|
|
||||||
if (newx == ibuf->x && newy == ibuf->y) return(ibuf);
|
if (newx == ibuf->x && newy == ibuf->y) return false;
|
||||||
|
|
||||||
if (do_rect) {
|
if (do_rect) {
|
||||||
_newrect = MEM_mallocN(newx * newy * sizeof(int), "scalefastimbuf");
|
_newrect = MEM_mallocN(newx * newy * sizeof(int), "scalefastimbuf");
|
||||||
if (_newrect == NULL) return(ibuf);
|
if (_newrect == NULL) return false;
|
||||||
newrect = _newrect;
|
newrect = _newrect;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1607,7 +1615,7 @@ struct ImBuf *IMB_scalefastImBuf(struct ImBuf *ibuf, unsigned int newx, unsigned
|
|||||||
_newrectf = MEM_mallocN(newx * newy * sizeof(float) * 4, "scalefastimbuf f");
|
_newrectf = MEM_mallocN(newx * newy * sizeof(float) * 4, "scalefastimbuf f");
|
||||||
if (_newrectf == NULL) {
|
if (_newrectf == NULL) {
|
||||||
if (_newrect) MEM_freeN(_newrect);
|
if (_newrect) MEM_freeN(_newrect);
|
||||||
return(ibuf);
|
return false;
|
||||||
}
|
}
|
||||||
newrectf = _newrectf;
|
newrectf = _newrectf;
|
||||||
}
|
}
|
||||||
@@ -1654,7 +1662,7 @@ struct ImBuf *IMB_scalefastImBuf(struct ImBuf *ibuf, unsigned int newx, unsigned
|
|||||||
|
|
||||||
ibuf->x = newx;
|
ibuf->x = newx;
|
||||||
ibuf->y = newy;
|
ibuf->y = newy;
|
||||||
return(ibuf);
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ******** threaded scaling ******** */
|
/* ******** threaded scaling ******** */
|
||||||
|
@@ -46,7 +46,7 @@
|
|||||||
#include "IMB_colormanagement.h"
|
#include "IMB_colormanagement.h"
|
||||||
#include "IMB_colormanagement_intern.h"
|
#include "IMB_colormanagement_intern.h"
|
||||||
|
|
||||||
static ImBuf *prepare_write_imbuf(const ImFileType *type, ImBuf *ibuf)
|
static bool prepare_write_imbuf(const ImFileType *type, ImBuf *ibuf)
|
||||||
{
|
{
|
||||||
return IMB_prepare_write_ImBuf((type->flag & IM_FTYPE_FLOAT), ibuf);
|
return IMB_prepare_write_ImBuf((type->flag & IM_FTYPE_FLOAT), ibuf);
|
||||||
}
|
}
|
||||||
@@ -64,15 +64,11 @@ short IMB_saveiff(struct ImBuf *ibuf, const char *name, int flags)
|
|||||||
|
|
||||||
for (type = IMB_FILE_TYPES; type < IMB_FILE_TYPES_LAST; type++) {
|
for (type = IMB_FILE_TYPES; type < IMB_FILE_TYPES_LAST; type++) {
|
||||||
if (type->save && type->ftype(type, ibuf)) {
|
if (type->save && type->ftype(type, ibuf)) {
|
||||||
ImBuf *write_ibuf;
|
|
||||||
short result = false;
|
short result = false;
|
||||||
|
|
||||||
write_ibuf = prepare_write_imbuf(type, ibuf);
|
prepare_write_imbuf(type, ibuf);
|
||||||
|
|
||||||
result = type->save(write_ibuf, name, flags);
|
result = type->save(ibuf, name, flags);
|
||||||
|
|
||||||
if (write_ibuf != ibuf)
|
|
||||||
IMB_freeImBuf(write_ibuf);
|
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@@ -83,9 +79,9 @@ short IMB_saveiff(struct ImBuf *ibuf, const char *name, int flags)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
ImBuf *IMB_prepare_write_ImBuf(const bool isfloat, ImBuf *ibuf)
|
bool IMB_prepare_write_ImBuf(const bool isfloat, ImBuf *ibuf)
|
||||||
{
|
{
|
||||||
ImBuf *write_ibuf = ibuf;
|
bool changed = false;
|
||||||
|
|
||||||
if (isfloat) {
|
if (isfloat) {
|
||||||
/* pass */
|
/* pass */
|
||||||
@@ -94,8 +90,11 @@ ImBuf *IMB_prepare_write_ImBuf(const bool isfloat, ImBuf *ibuf)
|
|||||||
if (ibuf->rect == NULL && ibuf->rect_float) {
|
if (ibuf->rect == NULL && ibuf->rect_float) {
|
||||||
ibuf->rect_colorspace = colormanage_colorspace_get_roled(COLOR_ROLE_DEFAULT_BYTE);
|
ibuf->rect_colorspace = colormanage_colorspace_get_roled(COLOR_ROLE_DEFAULT_BYTE);
|
||||||
IMB_rect_from_float(ibuf);
|
IMB_rect_from_float(ibuf);
|
||||||
|
if (ibuf->rect != NULL) {
|
||||||
|
changed = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return write_ibuf;
|
return changed;
|
||||||
}
|
}
|
||||||
|
@@ -146,6 +146,15 @@ PyObject *PyC_Tuple_PackArray_F32(const float *array, uint len)
|
|||||||
return tuple;
|
return tuple;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PyObject *PyC_Tuple_PackArray_F64(const double *array, uint len)
|
||||||
|
{
|
||||||
|
PyObject *tuple = PyTuple_New(len);
|
||||||
|
for (uint i = 0; i < len; i++) {
|
||||||
|
PyTuple_SET_ITEM(tuple, i, PyFloat_FromDouble(array[i]));
|
||||||
|
}
|
||||||
|
return tuple;
|
||||||
|
}
|
||||||
|
|
||||||
PyObject *PyC_Tuple_PackArray_I32(const int *array, uint len)
|
PyObject *PyC_Tuple_PackArray_I32(const int *array, uint len)
|
||||||
{
|
{
|
||||||
PyObject *tuple = PyTuple_New(len);
|
PyObject *tuple = PyTuple_New(len);
|
||||||
|
@@ -51,12 +51,15 @@ int PyC_AsArray(
|
|||||||
const PyTypeObject *type, const bool is_double, const char *error_prefix);
|
const PyTypeObject *type, const bool is_double, const char *error_prefix);
|
||||||
|
|
||||||
PyObject *PyC_Tuple_PackArray_F32(const float *array, uint len);
|
PyObject *PyC_Tuple_PackArray_F32(const float *array, uint len);
|
||||||
|
PyObject *PyC_Tuple_PackArray_F64(const double *array, uint len);
|
||||||
PyObject *PyC_Tuple_PackArray_I32(const int *array, uint len);
|
PyObject *PyC_Tuple_PackArray_I32(const int *array, uint len);
|
||||||
PyObject *PyC_Tuple_PackArray_I32FromBool(const int *array, uint len);
|
PyObject *PyC_Tuple_PackArray_I32FromBool(const int *array, uint len);
|
||||||
PyObject *PyC_Tuple_PackArray_Bool(const bool *array, uint len);
|
PyObject *PyC_Tuple_PackArray_Bool(const bool *array, uint len);
|
||||||
|
|
||||||
#define PyC_Tuple_Pack_F32(...) \
|
#define PyC_Tuple_Pack_F32(...) \
|
||||||
PyC_Tuple_PackArray_F32(((const float []){__VA_ARGS__}), VA_NARGS_COUNT(__VA_ARGS__))
|
PyC_Tuple_PackArray_F32(((const float []){__VA_ARGS__}), VA_NARGS_COUNT(__VA_ARGS__))
|
||||||
|
#define PyC_Tuple_Pack_F64(...) \
|
||||||
|
PyC_Tuple_PackArray_F64(((const double []){__VA_ARGS__}), VA_NARGS_COUNT(__VA_ARGS__))
|
||||||
#define PyC_Tuple_Pack_I32(...) \
|
#define PyC_Tuple_Pack_I32(...) \
|
||||||
PyC_Tuple_PackArray_I32(((const int []){__VA_ARGS__}), VA_NARGS_COUNT(__VA_ARGS__))
|
PyC_Tuple_PackArray_I32(((const int []){__VA_ARGS__}), VA_NARGS_COUNT(__VA_ARGS__))
|
||||||
#define PyC_Tuple_Pack_I32FromBool(...) \
|
#define PyC_Tuple_Pack_I32FromBool(...) \
|
||||||
|
@@ -1422,8 +1422,8 @@ static PyObject *pyrna_enum_to_py(PointerRNA *ptr, PropertyRNA *prop, int val)
|
|||||||
|
|
||||||
/* prefer not fail silently in case of api errors, maybe disable it later */
|
/* prefer not fail silently in case of api errors, maybe disable it later */
|
||||||
CLOG_WARN(BPY_LOG_RNA,
|
CLOG_WARN(BPY_LOG_RNA,
|
||||||
"Current value \"%d\" "
|
"current value '%d' "
|
||||||
"matches no enum in '%s', '%s', '%s'\n",
|
"matches no enum in '%s', '%s', '%s'",
|
||||||
val, RNA_struct_identifier(ptr->type),
|
val, RNA_struct_identifier(ptr->type),
|
||||||
ptr_name, RNA_property_identifier(prop));
|
ptr_name, RNA_property_identifier(prop));
|
||||||
|
|
||||||
@@ -6609,7 +6609,7 @@ static PyObject *pyrna_srna_ExternalType(StructRNA *srna)
|
|||||||
if (bpy_types == NULL) {
|
if (bpy_types == NULL) {
|
||||||
PyErr_Print();
|
PyErr_Print();
|
||||||
PyErr_Clear();
|
PyErr_Clear();
|
||||||
CLOG_ERROR(BPY_LOG_RNA, "failed to find 'bpy_types' module\n");
|
CLOG_ERROR(BPY_LOG_RNA, "failed to find 'bpy_types' module");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
bpy_types_dict = PyModule_GetDict(bpy_types); /* borrow */
|
bpy_types_dict = PyModule_GetDict(bpy_types); /* borrow */
|
||||||
@@ -6627,7 +6627,7 @@ static PyObject *pyrna_srna_ExternalType(StructRNA *srna)
|
|||||||
PyObject *tp_slots = PyDict_GetItem(((PyTypeObject *)newclass)->tp_dict, bpy_intern_str___slots__);
|
PyObject *tp_slots = PyDict_GetItem(((PyTypeObject *)newclass)->tp_dict, bpy_intern_str___slots__);
|
||||||
|
|
||||||
if (tp_slots == NULL) {
|
if (tp_slots == NULL) {
|
||||||
CLOG_ERROR(BPY_LOG_RNA, "expected class '%s' to have __slots__ defined, see bpy_types.py\n", idname);
|
CLOG_ERROR(BPY_LOG_RNA, "expected class '%s' to have __slots__ defined, see bpy_types.py", idname);
|
||||||
newclass = NULL;
|
newclass = NULL;
|
||||||
}
|
}
|
||||||
else if (PyTuple_GET_SIZE(tp_bases)) {
|
else if (PyTuple_GET_SIZE(tp_bases)) {
|
||||||
@@ -6637,12 +6637,12 @@ static PyObject *pyrna_srna_ExternalType(StructRNA *srna)
|
|||||||
char pyob_info[256];
|
char pyob_info[256];
|
||||||
PyC_ObSpitStr(pyob_info, sizeof(pyob_info), base_compare);
|
PyC_ObSpitStr(pyob_info, sizeof(pyob_info), base_compare);
|
||||||
CLOG_ERROR(BPY_LOG_RNA,
|
CLOG_ERROR(BPY_LOG_RNA,
|
||||||
"incorrect subclassing of SRNA '%s', expected '%s', see bpy_types.py\n",
|
"incorrect subclassing of SRNA '%s', expected '%s', see bpy_types.py",
|
||||||
idname, pyob_info);
|
idname, pyob_info);
|
||||||
newclass = NULL;
|
newclass = NULL;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
CLOG_INFO(BPY_LOG_RNA, 2, "SRNA sub-classed: '%s'\n", idname);
|
CLOG_INFO(BPY_LOG_RNA, 2, "SRNA sub-classed: '%s'", idname);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -6740,7 +6740,7 @@ static PyObject *pyrna_srna_Subtype(StructRNA *srna)
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
/* this should not happen */
|
/* this should not happen */
|
||||||
CLOG_ERROR(BPY_LOG_RNA, "error registering '%s'", idname);
|
CLOG_ERROR(BPY_LOG_RNA, "failed to register '%s'", idname);
|
||||||
PyErr_Print();
|
PyErr_Print();
|
||||||
PyErr_Clear();
|
PyErr_Clear();
|
||||||
}
|
}
|
||||||
@@ -7613,7 +7613,7 @@ static int bpy_class_call(bContext *C, PointerRNA *ptr, FunctionRNA *func, Param
|
|||||||
py_class = RNA_struct_py_type_get(ptr->type);
|
py_class = RNA_struct_py_type_get(ptr->type);
|
||||||
/* rare case. can happen when registering subclasses */
|
/* rare case. can happen when registering subclasses */
|
||||||
if (py_class == NULL) {
|
if (py_class == NULL) {
|
||||||
CLOG_WARN(BPY_LOG_RNA, "unable to get Python class for rna struct '%.200s'\n", RNA_struct_identifier(ptr->type));
|
CLOG_WARN(BPY_LOG_RNA, "unable to get Python class for rna struct '%.200s'", RNA_struct_identifier(ptr->type));
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user