[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [58512] trunk/blender/source/blender/ compositor: fix [#36248] Crash using factor input on color mix node.
Campbell Barton
ideasman42 at gmail.com
Mon Jul 22 21:59:08 CEST 2013
Revision: 58512
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=58512
Author: campbellbarton
Date: 2013-07-22 19:59:07 +0000 (Mon, 22 Jul 2013)
Log Message:
-----------
fix [#36248] Crash using factor input on color mix node.
Modified Paths:
--------------
trunk/blender/source/blender/compositor/intern/COM_SocketReader.h
trunk/blender/source/blender/compositor/intern/COM_WorkScheduler.cpp
trunk/blender/source/blender/compositor/operations/COM_ConvertColorToBWOperation.cpp
trunk/blender/source/blender/compositor/operations/COM_ConvertColorToValueProg.cpp
trunk/blender/source/blender/compositor/operations/COM_MathBaseOperation.cpp
trunk/blender/source/blender/compositor/operations/COM_MixAddOperation.cpp
trunk/blender/source/blender/compositor/operations/COM_MixBurnOperation.cpp
trunk/blender/source/blender/compositor/operations/COM_MixColorOperation.cpp
trunk/blender/source/blender/compositor/operations/COM_MixDarkenOperation.cpp
trunk/blender/source/blender/compositor/operations/COM_MixDifferenceOperation.cpp
trunk/blender/source/blender/compositor/operations/COM_MixDivideOperation.cpp
trunk/blender/source/blender/compositor/operations/COM_MixDodgeOperation.cpp
trunk/blender/source/blender/compositor/operations/COM_MixHueOperation.cpp
trunk/blender/source/blender/compositor/operations/COM_MixLightenOperation.cpp
trunk/blender/source/blender/compositor/operations/COM_MixLinearLightOperation.cpp
trunk/blender/source/blender/compositor/operations/COM_MixOverlayOperation.cpp
trunk/blender/source/blender/compositor/operations/COM_MixSaturationOperation.cpp
trunk/blender/source/blender/compositor/operations/COM_MixScreenOperation.cpp
trunk/blender/source/blender/compositor/operations/COM_MixSoftLightOperation.cpp
trunk/blender/source/blender/compositor/operations/COM_MixSubtractOperation.cpp
trunk/blender/source/blender/compositor/operations/COM_MixValueOperation.cpp
Modified: trunk/blender/source/blender/compositor/intern/COM_SocketReader.h
===================================================================
--- trunk/blender/source/blender/compositor/intern/COM_SocketReader.h 2013-07-22 19:24:39 UTC (rev 58511)
+++ trunk/blender/source/blender/compositor/intern/COM_SocketReader.h 2013-07-22 19:59:07 UTC (rev 58512)
@@ -91,13 +91,13 @@
virtual void executePixel(float output[4], float x, float y, float dx, float dy, PixelSampler sampler) {}
public:
- inline void read(float *result, float x, float y, PixelSampler sampler) {
+ inline void read(float result[4], float x, float y, PixelSampler sampler) {
executePixel(result, x, y, sampler);
}
- inline void read(float *result, int x, int y, void *chunkData) {
+ inline void read(float result[4], int x, int y, void *chunkData) {
executePixel(result, x, y, chunkData);
}
- inline void read(float *result, float x, float y, float dx, float dy, PixelSampler sampler) {
+ inline void read(float result[4], float x, float y, float dx, float dy, PixelSampler sampler) {
executePixel(result, x, y, dx, dy, sampler);
}
Modified: trunk/blender/source/blender/compositor/intern/COM_WorkScheduler.cpp
===================================================================
--- trunk/blender/source/blender/compositor/intern/COM_WorkScheduler.cpp 2013-07-22 19:24:39 UTC (rev 58511)
+++ trunk/blender/source/blender/compositor/intern/COM_WorkScheduler.cpp 2013-07-22 19:59:07 UTC (rev 58512)
@@ -81,6 +81,7 @@
void **g_highlightedNodes;
void **g_highlightedNodesRead;
+#if COM_CURRENT_THREADING_MODEL == COM_TM_QUEUE
#define HIGHLIGHT(wp) \
{ \
ExecutionGroup *group = wp->getExecutionGroup(); \
@@ -103,6 +104,7 @@
} \
} \
}
+#endif /* COM_CURRENT_THREADING_MODEL == COM_TM_QUEUE */
void COM_startReadHighlights()
{
Modified: trunk/blender/source/blender/compositor/operations/COM_ConvertColorToBWOperation.cpp
===================================================================
--- trunk/blender/source/blender/compositor/operations/COM_ConvertColorToBWOperation.cpp 2013-07-22 19:24:39 UTC (rev 58511)
+++ trunk/blender/source/blender/compositor/operations/COM_ConvertColorToBWOperation.cpp 2013-07-22 19:59:07 UTC (rev 58512)
@@ -37,7 +37,7 @@
void ConvertColorToBWOperation::executePixel(float output[4], float x, float y, PixelSampler sampler)
{
float inputColor[4];
- this->m_inputOperation->read(&inputColor[0], x, y, sampler);
+ this->m_inputOperation->read(inputColor, x, y, sampler);
output[0] = rgb_to_bw(inputColor);
}
Modified: trunk/blender/source/blender/compositor/operations/COM_ConvertColorToValueProg.cpp
===================================================================
--- trunk/blender/source/blender/compositor/operations/COM_ConvertColorToValueProg.cpp 2013-07-22 19:24:39 UTC (rev 58511)
+++ trunk/blender/source/blender/compositor/operations/COM_ConvertColorToValueProg.cpp 2013-07-22 19:59:07 UTC (rev 58512)
@@ -37,7 +37,7 @@
void ConvertColorToValueProg::executePixel(float output[4], float x, float y, PixelSampler sampler)
{
float inputColor[4];
- this->m_inputOperation->read(&inputColor[0], x, y, sampler);
+ this->m_inputOperation->read(inputColor, x, y, sampler);
output[0] = (inputColor[0] + inputColor[1] + inputColor[2]) / 3.0f;
}
Modified: trunk/blender/source/blender/compositor/operations/COM_MathBaseOperation.cpp
===================================================================
--- trunk/blender/source/blender/compositor/operations/COM_MathBaseOperation.cpp 2013-07-22 19:24:39 UTC (rev 58511)
+++ trunk/blender/source/blender/compositor/operations/COM_MathBaseOperation.cpp 2013-07-22 19:59:07 UTC (rev 58512)
@@ -77,8 +77,8 @@
float inputValue1[4];
float inputValue2[4];
- this->m_inputValue1Operation->read(&inputValue1[0], x, y, sampler);
- this->m_inputValue2Operation->read(&inputValue2[0], x, y, sampler);
+ this->m_inputValue1Operation->read(inputValue1, x, y, sampler);
+ this->m_inputValue2Operation->read(inputValue2, x, y, sampler);
output[0] = inputValue1[0] + inputValue2[0];
@@ -90,8 +90,8 @@
float inputValue1[4];
float inputValue2[4];
- this->m_inputValue1Operation->read(&inputValue1[0], x, y, sampler);
- this->m_inputValue2Operation->read(&inputValue2[0], x, y, sampler);
+ this->m_inputValue1Operation->read(inputValue1, x, y, sampler);
+ this->m_inputValue2Operation->read(inputValue2, x, y, sampler);
output[0] = inputValue1[0] - inputValue2[0];
@@ -103,8 +103,8 @@
float inputValue1[4];
float inputValue2[4];
- this->m_inputValue1Operation->read(&inputValue1[0], x, y, sampler);
- this->m_inputValue2Operation->read(&inputValue2[0], x, y, sampler);
+ this->m_inputValue1Operation->read(inputValue1, x, y, sampler);
+ this->m_inputValue2Operation->read(inputValue2, x, y, sampler);
output[0] = inputValue1[0] * inputValue2[0];
@@ -116,8 +116,8 @@
float inputValue1[4];
float inputValue2[4];
- this->m_inputValue1Operation->read(&inputValue1[0], x, y, sampler);
- this->m_inputValue2Operation->read(&inputValue2[0], x, y, sampler);
+ this->m_inputValue1Operation->read(inputValue1, x, y, sampler);
+ this->m_inputValue2Operation->read(inputValue2, x, y, sampler);
if (inputValue2[0] == 0) /* We don't want to divide by zero. */
output[0] = 0.0;
@@ -132,8 +132,8 @@
float inputValue1[4];
float inputValue2[4];
- this->m_inputValue1Operation->read(&inputValue1[0], x, y, sampler);
- this->m_inputValue2Operation->read(&inputValue2[0], x, y, sampler);
+ this->m_inputValue1Operation->read(inputValue1, x, y, sampler);
+ this->m_inputValue2Operation->read(inputValue2, x, y, sampler);
output[0] = sin(inputValue1[0]);
@@ -145,8 +145,8 @@
float inputValue1[4];
float inputValue2[4];
- this->m_inputValue1Operation->read(&inputValue1[0], x, y, sampler);
- this->m_inputValue2Operation->read(&inputValue2[0], x, y, sampler);
+ this->m_inputValue1Operation->read(inputValue1, x, y, sampler);
+ this->m_inputValue2Operation->read(inputValue2, x, y, sampler);
output[0] = cos(inputValue1[0]);
@@ -158,8 +158,8 @@
float inputValue1[4];
float inputValue2[4];
- this->m_inputValue1Operation->read(&inputValue1[0], x, y, sampler);
- this->m_inputValue2Operation->read(&inputValue2[0], x, y, sampler);
+ this->m_inputValue1Operation->read(inputValue1, x, y, sampler);
+ this->m_inputValue2Operation->read(inputValue2, x, y, sampler);
output[0] = tan(inputValue1[0]);
@@ -171,8 +171,8 @@
float inputValue1[4];
float inputValue2[4];
- this->m_inputValue1Operation->read(&inputValue1[0], x, y, sampler);
- this->m_inputValue2Operation->read(&inputValue2[0], x, y, sampler);
+ this->m_inputValue1Operation->read(inputValue1, x, y, sampler);
+ this->m_inputValue2Operation->read(inputValue2, x, y, sampler);
if (inputValue1[0] <= 1 && inputValue1[0] >= -1)
output[0] = asin(inputValue1[0]);
@@ -187,8 +187,8 @@
float inputValue1[4];
float inputValue2[4];
- this->m_inputValue1Operation->read(&inputValue1[0], x, y, sampler);
- this->m_inputValue2Operation->read(&inputValue2[0], x, y, sampler);
+ this->m_inputValue1Operation->read(inputValue1, x, y, sampler);
+ this->m_inputValue2Operation->read(inputValue2, x, y, sampler);
if (inputValue1[0] <= 1 && inputValue1[0] >= -1)
output[0] = acos(inputValue1[0]);
@@ -203,8 +203,8 @@
float inputValue1[4];
float inputValue2[4];
- this->m_inputValue1Operation->read(&inputValue1[0], x, y, sampler);
- this->m_inputValue2Operation->read(&inputValue2[0], x, y, sampler);
+ this->m_inputValue1Operation->read(inputValue1, x, y, sampler);
+ this->m_inputValue2Operation->read(inputValue2, x, y, sampler);
output[0] = atan(inputValue1[0]);
@@ -216,8 +216,8 @@
float inputValue1[4];
float inputValue2[4];
- this->m_inputValue1Operation->read(&inputValue1[0], x, y, sampler);
- this->m_inputValue2Operation->read(&inputValue2[0], x, y, sampler);
+ this->m_inputValue1Operation->read(inputValue1, x, y, sampler);
+ this->m_inputValue2Operation->read(inputValue2, x, y, sampler);
if (inputValue1[0] >= 0) {
output[0] = pow(inputValue1[0], inputValue2[0]);
@@ -241,8 +241,8 @@
float inputValue1[4];
float inputValue2[4];
- this->m_inputValue1Operation->read(&inputValue1[0], x, y, sampler);
- this->m_inputValue2Operation->read(&inputValue2[0], x, y, sampler);
+ this->m_inputValue1Operation->read(inputValue1, x, y, sampler);
+ this->m_inputValue2Operation->read(inputValue2, x, y, sampler);
if (inputValue1[0] > 0 && inputValue2[0] > 0)
output[0] = log(inputValue1[0]) / log(inputValue2[0]);
@@ -257,8 +257,8 @@
float inputValue1[4];
float inputValue2[4];
- this->m_inputValue1Operation->read(&inputValue1[0], x, y, sampler);
- this->m_inputValue2Operation->read(&inputValue2[0], x, y, sampler);
+ this->m_inputValue1Operation->read(inputValue1, x, y, sampler);
+ this->m_inputValue2Operation->read(inputValue2, x, y, sampler);
output[0] = min(inputValue1[0], inputValue2[0]);
@@ -270,8 +270,8 @@
float inputValue1[4];
float inputValue2[4];
- this->m_inputValue1Operation->read(&inputValue1[0], x, y, sampler);
- this->m_inputValue2Operation->read(&inputValue2[0], x, y, sampler);
+ this->m_inputValue1Operation->read(inputValue1, x, y, sampler);
+ this->m_inputValue2Operation->read(inputValue2, x, y, sampler);
output[0] = max(inputValue1[0], inputValue2[0]);
@@ -283,8 +283,8 @@
float inputValue1[4];
float inputValue2[4];
- this->m_inputValue1Operation->read(&inputValue1[0], x, y, sampler);
- this->m_inputValue2Operation->read(&inputValue2[0], x, y, sampler);
+ this->m_inputValue1Operation->read(inputValue1, x, y, sampler);
+ this->m_inputValue2Operation->read(inputValue2, x, y, sampler);
output[0] = round(inputValue1[0]);
@@ -296,8 +296,8 @@
float inputValue1[4];
float inputValue2[4];
- this->m_inputValue1Operation->read(&inputValue1[0], x, y, sampler);
- this->m_inputValue2Operation->read(&inputValue2[0], x, y, sampler);
+ this->m_inputValue1Operation->read(inputValue1, x, y, sampler);
+ this->m_inputValue2Operation->read(inputValue2, x, y, sampler);
output[0] = inputValue1[0] < inputValue2[0] ? 1.0f : 0.0f;
@@ -309,8 +309,8 @@
float inputValue1[4];
float inputValue2[4];
- this->m_inputValue1Operation->read(&inputValue1[0], x, y, sampler);
- this->m_inputValue2Operation->read(&inputValue2[0], x, y, sampler);
+ this->m_inputValue1Operation->read(inputValue1, x, y, sampler);
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list