diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2016-01-30 16:18:29 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2016-01-30 17:08:57 +0300 |
commit | 74c7707e8c763a60c2936e95c2f0ad13dfd33f43 (patch) | |
tree | 08dddce249a8821e54728355f32fea976d324ac1 /intern/cycles/blender/blender_sync.cpp | |
parent | 0e4e1993e619caad3dfbecc20ab9fb20cdf6cd06 (diff) |
Cycles: Pass Blender's C++ RNA structures by reference
This way we avoid passing structures which could be up to
few hundred bytes by value to the utility functions.
Ideally we'll also have to add `const` qualifier in majority
of the calls, but C++ RNA does not allow us to do that because
it does not know if some function modifies contents or not.
Diffstat (limited to 'intern/cycles/blender/blender_sync.cpp')
-rw-r--r-- | intern/cycles/blender/blender_sync.cpp | 51 |
1 files changed, 30 insertions, 21 deletions
diff --git a/intern/cycles/blender/blender_sync.cpp b/intern/cycles/blender/blender_sync.cpp index 78882156ed1..65d1a6d09ba 100644 --- a/intern/cycles/blender/blender_sync.cpp +++ b/intern/cycles/blender/blender_sync.cpp @@ -42,22 +42,29 @@ CCL_NAMESPACE_BEGIN /* Constructor */ -BlenderSync::BlenderSync(BL::RenderEngine b_engine_, BL::BlendData b_data_, BL::Scene b_scene_, Scene *scene_, bool preview_, Progress &progress_, bool is_cpu_) -: b_engine(b_engine_), - b_data(b_data_), b_scene(b_scene_), - shader_map(&scene_->shaders), - object_map(&scene_->objects), - mesh_map(&scene_->meshes), - light_map(&scene_->lights), - particle_system_map(&scene_->particle_systems), +BlenderSync::BlenderSync(BL::RenderEngine& b_engine, + BL::BlendData& b_data, + BL::Scene& b_scene, + Scene *scene, + bool preview, + Progress &progress, + bool is_cpu) +: b_engine(b_engine), + b_data(b_data), + b_scene(b_scene), + shader_map(&scene->shaders), + object_map(&scene->objects), + mesh_map(&scene->meshes), + light_map(&scene->lights), + particle_system_map(&scene->particle_systems), world_map(NULL), world_recalc(false), + scene(scene), + preview(preview), experimental(false), - progress(progress_) + is_cpu(is_cpu), + progress(progress) { - scene = scene_; - preview = preview_; - is_cpu = is_cpu_; } BlenderSync::~BlenderSync() @@ -145,9 +152,9 @@ bool BlenderSync::sync_recalc() return recalc; } -void BlenderSync::sync_data(BL::RenderSettings b_render, - BL::SpaceView3D b_v3d, - BL::Object b_override, +void BlenderSync::sync_data(BL::RenderSettings& b_render, + BL::SpaceView3D& b_v3d, + BL::Object& b_override, int width, int height, void **python_thread_state, const char *layer) @@ -308,7 +315,7 @@ void BlenderSync::sync_film() /* Render Layer */ -void BlenderSync::sync_render_layers(BL::SpaceView3D b_v3d, const char *layer) +void BlenderSync::sync_render_layers(BL::SpaceView3D& b_v3d, const char *layer) { PointerRNA cscene = RNA_pointer_get(&b_scene.ptr, "cycles"); string layername; @@ -416,7 +423,9 @@ void BlenderSync::sync_images() /* Scene Parameters */ -SceneParams BlenderSync::get_scene_params(BL::Scene b_scene, bool background, bool is_cpu) +SceneParams BlenderSync::get_scene_params(BL::Scene& b_scene, + bool background, + bool is_cpu) { BL::RenderSettings r = b_scene.render(); SceneParams params; @@ -455,15 +464,15 @@ SceneParams BlenderSync::get_scene_params(BL::Scene b_scene, bool background, bo /* Session Parameters */ -bool BlenderSync::get_session_pause(BL::Scene b_scene, bool background) +bool BlenderSync::get_session_pause(BL::Scene& b_scene, bool background) { PointerRNA cscene = RNA_pointer_get(&b_scene.ptr, "cycles"); return (background)? false: get_boolean(cscene, "preview_pause"); } -SessionParams BlenderSync::get_session_params(BL::RenderEngine b_engine, - BL::UserPreferences b_userpref, - BL::Scene b_scene, +SessionParams BlenderSync::get_session_params(BL::RenderEngine& b_engine, + BL::UserPreferences& b_userpref, + BL::Scene& b_scene, bool background) { SessionParams params; |