diff options
Diffstat (limited to 'servers/visual')
-rw-r--r-- | servers/visual/rasterizer_rd/shader_rd.cpp | 12 | ||||
-rw-r--r-- | servers/visual/rasterizer_rd/shader_rd.h | 4 | ||||
-rw-r--r-- | servers/visual/visual_server_wrap_mt.cpp | 2 | ||||
-rw-r--r-- | servers/visual/visual_server_wrap_mt.h | 2 |
4 files changed, 8 insertions, 12 deletions
diff --git a/servers/visual/rasterizer_rd/shader_rd.cpp b/servers/visual/rasterizer_rd/shader_rd.cpp index cc6c13f598..857a29f7f4 100644 --- a/servers/visual/rasterizer_rd/shader_rd.cpp +++ b/servers/visual/rasterizer_rd/shader_rd.cpp @@ -342,23 +342,21 @@ void ShaderRD::_compile_variant(uint32_t p_variant, Version *p_version) { } if (!build_ok) { - variant_set_mutex.lock(); //properly print the errors + MutexLock lock(variant_set_mutex); //properly print the errors ERR_PRINT("Error compiling " + String(current_stage == RD::SHADER_STAGE_COMPUTE ? "Compute " : (current_stage == RD::SHADER_STAGE_VERTEX ? "Vertex" : "Fragment")) + " shader, variant #" + itos(p_variant) + " (" + variant_defines[p_variant].get_data() + ")."); ERR_PRINT(error); #ifdef DEBUG_ENABLED ERR_PRINT("code:\n" + current_source.get_with_code_lines()); #endif - - variant_set_mutex.unlock(); return; } RID shader = RD::get_singleton()->shader_create(stages); - - variant_set_mutex.lock(); - p_version->variants[p_variant] = shader; - variant_set_mutex.unlock(); + { + MutexLock lock(variant_set_mutex); + p_version->variants[p_variant] = shader; + } } void ShaderRD::_compile_version(Version *p_version) { diff --git a/servers/visual/rasterizer_rd/shader_rd.h b/servers/visual/rasterizer_rd/shader_rd.h index 8581b85ff4..6635b08cc8 100644 --- a/servers/visual/rasterizer_rd/shader_rd.h +++ b/servers/visual/rasterizer_rd/shader_rd.h @@ -33,11 +33,11 @@ #include "core/hash_map.h" #include "core/map.h" +#include "core/os/mutex.h" #include "core/rid_owner.h" #include "core/variant.h" #include <stdio.h> -#include <mutex> /** @author Juan Linietsky <reduzio@gmail.com> */ @@ -66,7 +66,7 @@ class ShaderRD { bool initialize_needed; }; - std::mutex variant_set_mutex; + Mutex variant_set_mutex; void _compile_variant(uint32_t p_variant, Version *p_version); diff --git a/servers/visual/visual_server_wrap_mt.cpp b/servers/visual/visual_server_wrap_mt.cpp index 9a5e5e896a..90d301c0cd 100644 --- a/servers/visual/visual_server_wrap_mt.cpp +++ b/servers/visual/visual_server_wrap_mt.cpp @@ -180,7 +180,6 @@ VisualServerWrapMT::VisualServerWrapMT(VisualServer *p_contained, bool p_create_ thread = NULL; draw_pending = 0; draw_thread_up = false; - alloc_mutex = Mutex::create(); pool_max_size = GLOBAL_GET("memory/limits/multithreaded_server/rid_pool_prealloc"); if (!p_create_thread) { @@ -193,6 +192,5 @@ VisualServerWrapMT::VisualServerWrapMT(VisualServer *p_contained, bool p_create_ VisualServerWrapMT::~VisualServerWrapMT() { memdelete(visual_server); - memdelete(alloc_mutex); //finish(); } diff --git a/servers/visual/visual_server_wrap_mt.h b/servers/visual/visual_server_wrap_mt.h index 9d5281b17a..2eaafe220b 100644 --- a/servers/visual/visual_server_wrap_mt.h +++ b/servers/visual/visual_server_wrap_mt.h @@ -57,7 +57,7 @@ class VisualServerWrapMT : public VisualServer { void thread_exit(); - Mutex *alloc_mutex; + Mutex alloc_mutex; int pool_max_size; |