diff options
author | Brecht Van Lommel <brecht@blender.org> | 2021-03-15 18:11:12 +0300 |
---|---|---|
committer | Brecht Van Lommel <brecht@blender.org> | 2021-03-15 18:47:07 +0300 |
commit | cd3fade2aaf74d1c3db345c13bd0122dc45d372f (patch) | |
tree | a87fb96829eecd8c7f138539ef26a196b1ab947a /intern/cycles/render/light.cpp | |
parent | 3fdef12162f68a7f89a6f868f927fe8755c7bd20 (diff) |
Fix Cycles rendering crash on OpenBSD
Static initialization order was not guaranteed to be correct for node base
types. Now wrap all initialization in accessor functions to ensure the order
is correct.
Did not cause any known bug on Linux/macOS/Windows, but showed up on this
platform.
Diffstat (limited to 'intern/cycles/render/light.cpp')
-rw-r--r-- | intern/cycles/render/light.cpp | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/intern/cycles/render/light.cpp b/intern/cycles/render/light.cpp index d1e64e2ac14..72450e2c546 100644 --- a/intern/cycles/render/light.cpp +++ b/intern/cycles/render/light.cpp @@ -151,12 +151,12 @@ NODE_DEFINE(Light) SOCKET_BOOLEAN(is_portal, "Is Portal", false); SOCKET_BOOLEAN(is_enabled, "Is Enabled", true); - SOCKET_NODE(shader, "Shader", &Shader::node_type); + SOCKET_NODE(shader, "Shader", Shader::get_node_type()); return type; } -Light::Light() : Node(node_type) +Light::Light() : Node(get_node_type()) { } @@ -609,7 +609,7 @@ void LightManager::device_update_background(Device *device, Shader *shader = scene->background->get_shader(scene); int num_suns = 0; foreach (ShaderNode *node, shader->graph->nodes) { - if (node->type == EnvironmentTextureNode::node_type) { + if (node->type == EnvironmentTextureNode::get_node_type()) { EnvironmentTextureNode *env = (EnvironmentTextureNode *)node; ImageMetaData metadata; if (!env->handle.empty()) { @@ -618,7 +618,7 @@ void LightManager::device_update_background(Device *device, environment_res.y = max(environment_res.y, metadata.height); } } - if (node->type == SkyTextureNode::node_type) { + if (node->type == SkyTextureNode::get_node_type()) { SkyTextureNode *sky = (SkyTextureNode *)node; if (sky->get_sky_type() == NODE_SKY_NISHITA && sky->get_sun_disc()) { /* Ensure that the input coordinates aren't transformed before they reach the node. @@ -627,7 +627,7 @@ void LightManager::device_update_background(Device *device, const ShaderInput *vec_in = sky->input("Vector"); if (vec_in && vec_in->link && vec_in->link->parent) { ShaderNode *vec_src = vec_in->link->parent; - if ((vec_src->type != TextureCoordinateNode::node_type) || + if ((vec_src->type != TextureCoordinateNode::get_node_type()) || (vec_in->link != vec_src->output("Generated"))) { environment_res.x = max(environment_res.x, 4096); environment_res.y = max(environment_res.y, 2048); |