From 1f76e6c326f6c1d77d99a5329f7c75b1eeccde9d Mon Sep 17 00:00:00 2001 From: Philipp Oeser Date: Mon, 7 May 2018 14:49:09 +0200 Subject: Fix T54525: crash when setting number of frames to use between dupoff frames caused division by zero if both dupli_frames_on and dupli_frames_off are zero. doing this doesnt seem useful, dupliframes can be disabled in other ways. Reviewed By: campbellbarton Differential Revision: https://developer.blender.org/D3132 --- source/blender/makesrna/intern/rna_object.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source') diff --git a/source/blender/makesrna/intern/rna_object.c b/source/blender/makesrna/intern/rna_object.c index 84318b7124a..49d8bd796d9 100644 --- a/source/blender/makesrna/intern/rna_object.c +++ b/source/blender/makesrna/intern/rna_object.c @@ -2711,7 +2711,7 @@ static void rna_def_object(BlenderRNA *brna) prop = RNA_def_property(srna, "dupli_frames_on", PROP_INT, PROP_NONE | PROP_UNIT_TIME); RNA_def_property_int_sdna(prop, NULL, "dupon"); - RNA_def_property_range(prop, MINFRAME, MAXFRAME); + RNA_def_property_range(prop, 1, MAXFRAME); RNA_def_property_ui_range(prop, 1, 1500, 1, -1); RNA_def_property_ui_text(prop, "Dupli Frames On", "Number of frames to use between DupOff frames"); RNA_def_property_update(prop, NC_OBJECT | ND_DRAW, "rna_Object_internal_update"); -- cgit v1.2.3 From 66ec3c7e7f9c8485ee30b5d359965c631d08b38d Mon Sep 17 00:00:00 2001 From: Philipp Oeser Date: Mon, 7 May 2018 14:57:05 +0200 Subject: Fix Movieclip editors 'graph' and 'dopesheet' view using themes region background setting mentioned in T54942 Reviewed By: campbellbarton Differential Revision: https://developer.blender.org/D3200 --- source/blender/editors/interface/resources.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source') diff --git a/source/blender/editors/interface/resources.c b/source/blender/editors/interface/resources.c index 33d0b2ae608..ce25817c147 100644 --- a/source/blender/editors/interface/resources.c +++ b/source/blender/editors/interface/resources.c @@ -173,7 +173,7 @@ const unsigned char *UI_ThemeGetColorPtr(bTheme *btheme, int spacetype, int colo switch (colorid) { case TH_BACK: - if (theme_regionid == RGN_TYPE_WINDOW) + if (ELEM(theme_regionid, RGN_TYPE_WINDOW, RGN_TYPE_PREVIEW)) cp = ts->back; else if (theme_regionid == RGN_TYPE_CHANNELS) cp = ts->list; -- cgit v1.2.3 From 905eeb0bc7f46efb95cb5450cc6c2ec27f02730c Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 7 May 2018 17:14:28 +0200 Subject: Cleanup: move unit char/short/float to functions This caused GCC 8.1 to crash at build time, but was also not very nice use of macros. --- source/blender/alembic/intern/abc_customdata.cc | 1 + source/blender/blenlib/BLI_utildefines.h | 23 ---------------- source/blender/blenlib/intern/math_base_inline.c | 32 ++++++++++++++++++++++ .../compositor/operations/COM_PreviewOperation.cpp | 2 +- source/blender/imbuf/intern/filter.c | 1 + source/blender/imbuf/intern/scaling.c | 6 ++-- source/blender/makesrna/intern/rna_ID.c | 1 + source/blender/makesrna/intern/rna_image.c | 1 + 8 files changed, 40 insertions(+), 27 deletions(-) (limited to 'source') diff --git a/source/blender/alembic/intern/abc_customdata.cc b/source/blender/alembic/intern/abc_customdata.cc index b3b015c7abf..3b6c87ea1a0 100644 --- a/source/blender/alembic/intern/abc_customdata.cc +++ b/source/blender/alembic/intern/abc_customdata.cc @@ -31,6 +31,7 @@ extern "C" { #include "DNA_customdata_types.h" #include "DNA_meshdata_types.h" +#include "BLI_math_base.h" #include "BKE_customdata.h" } diff --git a/source/blender/blenlib/BLI_utildefines.h b/source/blender/blenlib/BLI_utildefines.h index 46b3748c7ce..65dcbf04913 100644 --- a/source/blender/blenlib/BLI_utildefines.h +++ b/source/blender/blenlib/BLI_utildefines.h @@ -224,29 +224,6 @@ extern "C" { b = tmp; \ } (void)0 - -#define FTOCHAR(val) ((CHECK_TYPE_INLINE(val, float)), \ - (char)(((val) <= 0.0f) ? 0 : (((val) > (1.0f - 0.5f / 255.0f)) ? 255 : ((255.0f * (val)) + 0.5f)))) -#define FTOUSHORT(val) ((CHECK_TYPE_INLINE(val, float)), \ - (unsigned short)((val >= 1.0f - 0.5f / 65535) ? 65535 : (val <= 0.0f) ? 0 : (val * 65535.0f + 0.5f))) -#define USHORTTOUCHAR(val) ((unsigned char)(((val) >= 65535 - 128) ? 255 : ((val) + 128) >> 8)) -#define F3TOCHAR3(v2, v1) { \ - (v1)[0] = FTOCHAR((v2[0])); \ - (v1)[1] = FTOCHAR((v2[1])); \ - (v1)[2] = FTOCHAR((v2[2])); \ -} (void)0 -#define F3TOCHAR4(v2, v1) { \ - (v1)[0] = FTOCHAR((v2[0])); \ - (v1)[1] = FTOCHAR((v2[1])); \ - (v1)[2] = FTOCHAR((v2[2])); \ - (v1)[3] = 255; \ -} (void)0 -#define F4TOCHAR4(v2, v1) { \ - (v1)[0] = FTOCHAR((v2[0])); \ - (v1)[1] = FTOCHAR((v2[1])); \ - (v1)[2] = FTOCHAR((v2[2])); \ - (v1)[3] = FTOCHAR((v2[3])); \ -} (void)0 #define VECCOPY(v1, v2) { \ *(v1) = *(v2); \ *(v1 + 1) = *(v2 + 1); \ diff --git a/source/blender/blenlib/intern/math_base_inline.c b/source/blender/blenlib/intern/math_base_inline.c index 4bedcbdf5bf..82ed6cd1cd1 100644 --- a/source/blender/blenlib/intern/math_base_inline.c +++ b/source/blender/blenlib/intern/math_base_inline.c @@ -513,6 +513,38 @@ MALWAYS_INLINE __m128 _bli_math_blend_sse(const __m128 mask, return _mm_or_ps(_mm_and_ps(mask, a), _mm_andnot_ps(mask, b)); } +/* Low level conversion functions */ +/* TODO: name sensibly. */ +MINLINE unsigned char FTOCHAR(float val) +{ + return (unsigned char)(((val <= 0.0f) ? 0 : ((val > (1.0f - 0.5f / 255.0f)) ? 255 : ((255.0f * val) + 0.5f)))); +} +#define FTOCHAR(val) ((CHECK_TYPE_INLINE(val, float)), FTOCHAR(val)) + +MINLINE unsigned short FTOUSHORT(float val) +{ + return (unsigned short)((val >= 1.0f - 0.5f / 65535) ? 65535 : (val <= 0.0f) ? 0 : (val * 65535.0f + 0.5f)); +} +#define FTOUSHORT(val) ((CHECK_TYPE_INLINE(val, float)), FTOUSHORT(val)) + +MINLINE unsigned char USHORTTOUCHAR(unsigned short val) +{ + return (unsigned char)(((val) >= 65535 - 128) ? 255 : ((val) + 128) >> 8); +} +#define USHORTTOUCHAR(val) ((CHECK_TYPE_INLINE(val, unsigned short)), USHORTTOUCHAR(val)) + +#define F3TOCHAR3(v2, v1) { \ + (v1)[0] = FTOCHAR((v2[0])); \ + (v1)[1] = FTOCHAR((v2[1])); \ + (v1)[2] = FTOCHAR((v2[2])); \ +} ((void)0) +#define F4TOCHAR4(v2, v1) { \ + (v1)[0] = FTOCHAR((v2[0])); \ + (v1)[1] = FTOCHAR((v2[1])); \ + (v1)[2] = FTOCHAR((v2[2])); \ + (v1)[3] = FTOCHAR((v2[3])); \ +} ((void)0) + #endif /* __SSE2__ */ #endif /* __MATH_BASE_INLINE_C__ */ diff --git a/source/blender/compositor/operations/COM_PreviewOperation.cpp b/source/blender/compositor/operations/COM_PreviewOperation.cpp index aa667884de6..2845b972f65 100644 --- a/source/blender/compositor/operations/COM_PreviewOperation.cpp +++ b/source/blender/compositor/operations/COM_PreviewOperation.cpp @@ -105,7 +105,7 @@ void PreviewOperation::executeRegion(rcti *rect, unsigned int /*tileNumber*/) color[3] = 1.0f; this->m_input->readSampled(color, rx, ry, COM_PS_NEAREST); IMB_colormanagement_processor_apply_v4(cm_processor, color); - F4TOCHAR4(color, this->m_outputBuffer + offset); + rgba_float_to_uchar(this->m_outputBuffer + offset, color); offset += 4; } } diff --git a/source/blender/imbuf/intern/filter.c b/source/blender/imbuf/intern/filter.c index 38609d0a342..27711618cee 100644 --- a/source/blender/imbuf/intern/filter.c +++ b/source/blender/imbuf/intern/filter.c @@ -34,6 +34,7 @@ #include "MEM_guardedalloc.h" #include "BLI_utildefines.h" +#include "BLI_math_base.h" #include "IMB_imbuf_types.h" #include "IMB_imbuf.h" diff --git a/source/blender/imbuf/intern/scaling.c b/source/blender/imbuf/intern/scaling.c index ff92ce15811..1c0b47f7942 100644 --- a/source/blender/imbuf/intern/scaling.c +++ b/source/blender/imbuf/intern/scaling.c @@ -332,9 +332,9 @@ MINLINE void premul_ushort_to_straight_uchar(unsigned char *result, const unsign else { unsigned short alpha = color[3] / 256; - result[0] = USHORTTOUCHAR(color[0] / alpha * 256); - result[1] = USHORTTOUCHAR(color[1] / alpha * 256); - result[2] = USHORTTOUCHAR(color[2] / alpha * 256); + result[0] = USHORTTOUCHAR((ushort)(color[0] / alpha * 256)); + result[1] = USHORTTOUCHAR((ushort)(color[1] / alpha * 256)); + result[2] = USHORTTOUCHAR((ushort)(color[2] / alpha * 256)); result[3] = USHORTTOUCHAR(color[3]); } } diff --git a/source/blender/makesrna/intern/rna_ID.c b/source/blender/makesrna/intern/rna_ID.c index bc2c26c2b2b..7357712aaef 100644 --- a/source/blender/makesrna/intern/rna_ID.c +++ b/source/blender/makesrna/intern/rna_ID.c @@ -33,6 +33,7 @@ #include "DNA_object_types.h" #include "BLI_utildefines.h" +#include "BLI_math_base.h" #include "BKE_icons.h" #include "BKE_object.h" diff --git a/source/blender/makesrna/intern/rna_image.c b/source/blender/makesrna/intern/rna_image.c index cb71cf756ec..5bb38f29309 100644 --- a/source/blender/makesrna/intern/rna_image.c +++ b/source/blender/makesrna/intern/rna_image.c @@ -30,6 +30,7 @@ #include "DNA_scene_types.h" #include "BLI_utildefines.h" +#include "BLI_math_base.h" #include "BKE_context.h" #include "BKE_depsgraph.h" -- cgit v1.2.3