Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/intern
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2013-09-04 02:39:21 +0400
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2013-09-04 02:39:21 +0400
commit60e5abe71f8c219f7ba6dcb8ac9d109ca5610715 (patch)
tree6a57327818427635e3ac1304e8c1858f9b0621bd /intern
parentb314209356288c3768faa1d7fbd7b1bf9d179a7a (diff)
Fix a few issues reported by coverity scan.
Diffstat (limited to 'intern')
-rw-r--r--intern/cycles/blender/blender_sync.cpp2
-rw-r--r--intern/cycles/kernel/osl/osl_services.cpp3
-rw-r--r--intern/cycles/kernel/osl/osl_shader.cpp2
-rw-r--r--intern/cycles/render/camera.cpp1
-rw-r--r--intern/cycles/render/mesh.cpp2
-rw-r--r--intern/cycles/render/nodes.cpp8
-rw-r--r--intern/cycles/render/object.cpp3
-rw-r--r--intern/cycles/render/scene.h1
-rw-r--r--intern/cycles/render/session.cpp1
-rw-r--r--intern/cycles/render/session.h4
-rw-r--r--intern/cycles/render/svm.cpp1
-rw-r--r--intern/cycles/render/tile.cpp14
-rw-r--r--intern/cycles/render/tile.h31
-rw-r--r--intern/cycles/util/util_task.cpp4
14 files changed, 50 insertions, 27 deletions
diff --git a/intern/cycles/blender/blender_sync.cpp b/intern/cycles/blender/blender_sync.cpp
index 58ce08665ef..337d075cce4 100644
--- a/intern/cycles/blender/blender_sync.cpp
+++ b/intern/cycles/blender/blender_sync.cpp
@@ -458,7 +458,7 @@ SessionParams BlenderSync::get_session_params(BL::RenderEngine b_engine, BL::Use
params.tile_size = make_int2(tile_x, tile_y);
}
- params.tile_order = RNA_enum_get(&cscene, "tile_order");
+ params.tile_order = (TileOrder)RNA_enum_get(&cscene, "tile_order");
params.start_resolution = get_int(cscene, "preview_start_resolution");
diff --git a/intern/cycles/kernel/osl/osl_services.cpp b/intern/cycles/kernel/osl/osl_services.cpp
index d61a22a3572..309f5ded96d 100644
--- a/intern/cycles/kernel/osl/osl_services.cpp
+++ b/intern/cycles/kernel/osl/osl_services.cpp
@@ -97,6 +97,7 @@ ustring OSLRenderServices::u_empty;
OSLRenderServices::OSLRenderServices()
{
kernel_globals = NULL;
+ osl_ts = NULL;
}
OSLRenderServices::~OSLRenderServices()
@@ -701,7 +702,7 @@ bool OSLRenderServices::get_attribute(void *renderstate, bool derivatives, ustri
int object, prim, segment;
/* lookup of attribute on another object */
- if (object_name != u_empty || sd == NULL) {
+ if (object_name != u_empty) {
OSLGlobals::ObjectNameMap::iterator it = kg->osl->object_name_map.find(object_name);
if (it == kg->osl->object_name_map.end())
diff --git a/intern/cycles/kernel/osl/osl_shader.cpp b/intern/cycles/kernel/osl/osl_shader.cpp
index d2ccb7da84c..3c057f2b968 100644
--- a/intern/cycles/kernel/osl/osl_shader.cpp
+++ b/intern/cycles/kernel/osl/osl_shader.cpp
@@ -388,6 +388,8 @@ static void flatten_volume_closure_tree(ShaderData *sd,
sc.sample_weight = sample_weight;
sc.type = CLOSURE_VOLUME_ID;
+ sc.data0 = 0.0f;
+ sc.data1 = 0.0f;
sc.prim = NULL;
/* add */
diff --git a/intern/cycles/render/camera.cpp b/intern/cycles/render/camera.cpp
index 5b6d2fe83ba..edf7f7fb09d 100644
--- a/intern/cycles/render/camera.cpp
+++ b/intern/cycles/render/camera.cpp
@@ -52,6 +52,7 @@ Camera::Camera()
width = 1024;
height = 512;
+ resolution = 1;
viewplane.left = -((float)width/(float)height);
viewplane.right = (float)width/(float)height;
diff --git a/intern/cycles/render/mesh.cpp b/intern/cycles/render/mesh.cpp
index e18fce65dd3..ecae35ae5ea 100644
--- a/intern/cycles/render/mesh.cpp
+++ b/intern/cycles/render/mesh.cpp
@@ -39,6 +39,7 @@ CCL_NAMESPACE_BEGIN
Mesh::Mesh()
{
need_update = true;
+ need_update_rebuild = false;
transform_applied = false;
transform_negative_scaled = false;
transform_normal = transform_identity();
@@ -467,6 +468,7 @@ void MeshManager::update_osl_attributes(Device *device, Scene *scene, vector<Att
osl_attr.type = attr.type();
osl_attr.elem = ATTR_ELEMENT_VALUE;
osl_attr.value = attr;
+ osl_attr.offset = 0;
og->attribute_map[i*ATTR_PRIM_TYPES][attr.name()] = osl_attr;
og->attribute_map[i*ATTR_PRIM_TYPES + ATTR_PRIM_CURVE][attr.name()] = osl_attr;
diff --git a/intern/cycles/render/nodes.cpp b/intern/cycles/render/nodes.cpp
index 06acb9e749e..22bca659072 100644
--- a/intern/cycles/render/nodes.cpp
+++ b/intern/cycles/render/nodes.cpp
@@ -452,6 +452,13 @@ static void sky_texture_precompute_old(SunSky *sunsky, float3 dir, float turbidi
sunsky->config_z[3] = (-0.0441f * T - 1.6537f);
sunsky->config_z[4] = (-0.0109f * T + 0.0529f);
+ /* unused for old sky model */
+ for(int i = 5; i < 9; i++) {
+ sunsky->config_x[i] = 0.0f;
+ sunsky->config_y[i] = 0.0f;
+ sunsky->config_z[i] = 0.0f;
+ }
+
sunsky->radiance_x /= sky_perez_function(sunsky->config_x, 0, theta);
sunsky->radiance_y /= sky_perez_function(sunsky->config_y, 0, theta);
sunsky->radiance_z /= sky_perez_function(sunsky->config_z, 0, theta);
@@ -558,6 +565,7 @@ void SkyTextureNode::compile(OSLCompiler& compiler)
tex_mapping.compile(compiler);
SunSky sunsky;
+
if(type_enum[type] == NODE_SKY_OLD)
sky_texture_precompute_old(&sunsky, sun_direction, turbidity);
else if(type_enum[type] == NODE_SKY_NEW)
diff --git a/intern/cycles/render/object.cpp b/intern/cycles/render/object.cpp
index 1aa0654ea49..0479dd9af74 100644
--- a/intern/cycles/render/object.cpp
+++ b/intern/cycles/render/object.cpp
@@ -41,10 +41,13 @@ Object::Object()
particle_id = 0;
bounds = BoundBox::empty;
motion.pre = transform_identity();
+ motion.mid = transform_identity();
motion.post = transform_identity();
use_motion = false;
use_holdout = false;
curverender = false;
+ dupli_generated = make_float3(0.0f, 0.0f, 0.0f);
+ dupli_uv = make_float2(0.0f, 0.0f);
}
Object::~Object()
diff --git a/intern/cycles/render/scene.h b/intern/cycles/render/scene.h
index 05415c7e877..2c223192536 100644
--- a/intern/cycles/render/scene.h
+++ b/intern/cycles/render/scene.h
@@ -136,6 +136,7 @@ public:
#else
use_qbvh = false;
#endif
+ persistent_data = false;
}
bool modified(const SceneParams& params)
diff --git a/intern/cycles/render/session.cpp b/intern/cycles/render/session.cpp
index d18223d7ab3..6c15849d815 100644
--- a/intern/cycles/render/session.cpp
+++ b/intern/cycles/render/session.cpp
@@ -66,6 +66,7 @@ Session::Session(const SessionParams& params_)
reset_time = 0.0;
preview_time = 0.0;
paused_time = 0.0;
+ last_update_time = 0.0;
delayed_reset.do_reset = false;
delayed_reset.samples = 0;
diff --git a/intern/cycles/render/session.h b/intern/cycles/render/session.h
index 8cff64def4e..b2ab4cb9f34 100644
--- a/intern/cycles/render/session.h
+++ b/intern/cycles/render/session.h
@@ -49,7 +49,7 @@ public:
bool experimental;
int samples;
int2 tile_size;
- int tile_order;
+ TileOrder tile_order;
int start_resolution;
int threads;
@@ -81,6 +81,7 @@ public:
text_timeout = 1.0;
shadingsystem = SVM;
+ tile_order = TILE_CENTER;
}
bool modified(const SessionParams& params)
@@ -99,6 +100,7 @@ public:
&& cancel_timeout == params.cancel_timeout
&& reset_timeout == params.reset_timeout
&& text_timeout == params.text_timeout
+ && tile_order == params.tile_order
&& shadingsystem == params.shadingsystem); }
};
diff --git a/intern/cycles/render/svm.cpp b/intern/cycles/render/svm.cpp
index 0e84ebb1634..930c53d9572 100644
--- a/intern/cycles/render/svm.cpp
+++ b/intern/cycles/render/svm.cpp
@@ -110,6 +110,7 @@ SVMCompiler::SVMCompiler(ShaderManager *shader_manager_, ImageManager *image_man
max_stack_use = 0;
current_type = SHADER_TYPE_SURFACE;
current_shader = NULL;
+ current_graph = NULL;
background = false;
mix_weight_offset = SVM_STACK_INVALID;
use_multi_closure = use_multi_closure_;
diff --git a/intern/cycles/render/tile.cpp b/intern/cycles/render/tile.cpp
index e707f336627..72bcdf966b5 100644
--- a/intern/cycles/render/tile.cpp
+++ b/intern/cycles/render/tile.cpp
@@ -22,7 +22,7 @@
CCL_NAMESPACE_BEGIN
TileManager::TileManager(bool progressive_, int num_samples_, int2 tile_size_, int start_resolution_,
- bool preserve_tile_device_, bool background_, int tile_order_, int num_devices_)
+ bool preserve_tile_device_, bool background_, TileOrder tile_order_, int num_devices_)
{
progressive = progressive_;
tile_size = tile_size_;
@@ -178,7 +178,7 @@ list<Tile>::iterator TileManager::next_viewport_tile(int device)
return state.tiles.end();
}
-list<Tile>::iterator TileManager::next_background_tile(int device, int tile_order)
+list<Tile>::iterator TileManager::next_background_tile(int device, TileOrder tile_order)
{
list<Tile>::iterator iter, best = state.tiles.end();
@@ -199,21 +199,21 @@ list<Tile>::iterator TileManager::next_background_tile(int device, int tile_orde
int64_t disty = cordy;
switch (tile_order) {
- case TileManager::CENTER:
+ case TILE_CENTER:
distx = centx - (cur_tile.x + cur_tile.w);
disty = centy - (cur_tile.y + cur_tile.h);
distx = (int64_t) sqrt((double)distx * distx + disty * disty);
break;
- case TileManager::RIGHT_TO_LEFT:
+ case TILE_RIGHT_TO_LEFT:
distx = cordx - cur_tile.x;
break;
- case TileManager::LEFT_TO_RIGHT:
+ case TILE_LEFT_TO_RIGHT:
distx = cordx + cur_tile.x;
break;
- case TileManager::TOP_TO_BOTTOM:
+ case TILE_TOP_TO_BOTTOM:
distx = cordx - cur_tile.y;
break;
- case TileManager::BOTTOM_TO_TOP:
+ case TILE_BOTTOM_TO_TOP:
distx = cordx + cur_tile.y;
break;
default:
diff --git a/intern/cycles/render/tile.h b/intern/cycles/render/tile.h
index 2de5e163bbe..7796518b6bc 100644
--- a/intern/cycles/render/tile.h
+++ b/intern/cycles/render/tile.h
@@ -40,6 +40,17 @@ public:
: index(index_), x(x_), y(y_), w(w_), h(h_), device(device_), rendering(false) {}
};
+/* Tile order */
+
+/* Note: this should match enum_tile_order in properties.py */
+enum TileOrder {
+ TILE_CENTER = 0,
+ TILE_RIGHT_TO_LEFT = 1,
+ TILE_LEFT_TO_RIGHT = 2,
+ TILE_TOP_TO_BOTTOM = 3,
+ TILE_BOTTOM_TO_TOP = 4
+};
+
/* Tile Manager */
class TileManager {
@@ -59,7 +70,7 @@ public:
int num_samples;
TileManager(bool progressive, int num_samples, int2 tile_size, int start_resolution,
- bool preserve_tile_device, bool background, int tile_order, int num_devices = 1);
+ bool preserve_tile_device, bool background, TileOrder tile_order, int num_devices = 1);
~TileManager();
void reset(BufferParams& params, int num_samples);
@@ -67,23 +78,15 @@ public:
bool next();
bool next_tile(Tile& tile, int device = 0);
bool done();
-
- void set_tile_order(int tile_order_) { tile_order = tile_order_; }
-protected:
- /* Note: this should match enum_tile_order in properties.py */
- enum {
- CENTER = 0,
- RIGHT_TO_LEFT = 1,
- LEFT_TO_RIGHT = 2,
- TOP_TO_BOTTOM = 3,
- BOTTOM_TO_TOP = 4
- } TileOrder;
+ void set_tile_order(TileOrder tile_order_) { tile_order = tile_order_; }
+protected:
+
void set_tiles();
bool progressive;
int2 tile_size;
- int tile_order;
+ TileOrder tile_order;
int start_resolution;
int num_devices;
@@ -113,7 +116,7 @@ protected:
void gen_tiles_sliced();
/* returns tiles for background render */
- list<Tile>::iterator next_background_tile(int device, int tile_order);
+ list<Tile>::iterator next_background_tile(int device, TileOrder tile_order);
/* returns first unhandled tile for viewport render */
list<Tile>::iterator next_viewport_tile(int device);
diff --git a/intern/cycles/util/util_task.cpp b/intern/cycles/util/util_task.cpp
index 4426ea0fef1..e5a5ac8cddf 100644
--- a/intern/cycles/util/util_task.cpp
+++ b/intern/cycles/util/util_task.cpp
@@ -373,14 +373,12 @@ bool DedicatedTaskPool::cancelled()
void DedicatedTaskPool::num_decrease(int done)
{
- num_mutex.lock();
+ thread_scoped_lock num_lock(num_mutex);
num -= done;
assert(num >= 0);
if(num == 0)
num_cond.notify_all();
-
- num_mutex.unlock();
}
void DedicatedTaskPool::num_increase()