diff options
author | sapier <Sapier at GMX dot net> | 2014-01-06 12:45:42 +0100 |
---|---|---|
committer | sapier <Sapier at GMX dot net> | 2014-01-10 10:10:45 +0100 |
commit | 8b0b857eaaa50c6ec217a46c0577395c78ec04c7 (patch) | |
tree | b9fd5e1edb099aee1498b29a43702568a283aa34 /src/shader.cpp | |
parent | 10fdbf737513e48bfcfb9e90fe243dcd989c0476 (diff) | |
download | minetest-8b0b857eaaa50c6ec217a46c0577395c78ec04c7.tar.gz minetest-8b0b857eaaa50c6ec217a46c0577395c78ec04c7.tar.bz2 minetest-8b0b857eaaa50c6ec217a46c0577395c78ec04c7.zip |
Make MutexQueue use jsemaphore for signaling
Diffstat (limited to 'src/shader.cpp')
-rw-r--r-- | src/shader.cpp | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/src/shader.cpp b/src/shader.cpp index 39296f6a3..d29c9d3a7 100644 --- a/src/shader.cpp +++ b/src/shader.cpp @@ -427,21 +427,18 @@ u32 ShaderSource::getShaderId(const std::string &name) /* infostream<<"Waiting for shader from main thread, name=\"" <<name<<"\""<<std::endl;*/ - try{ - while(true) { - // Wait result for a second - GetResult<std::string, u32, u8, u8> - result = result_queue.pop_front(1000); - - if (result.key == name) { - return result.item; - } + while(true) { + GetResult<std::string, u32, u8, u8> + result = result_queue.pop_frontNoEx(); + + if (result.key == name) { + return result.item; + } + else { + errorstream << "Got shader with invalid name: " << result.key << std::endl; } } - catch(ItemNotFoundException &e){ - errorstream<<"Waiting for shader " << name << " timed out."<<std::endl; - return 0; - } + } infostream<<"getShaderId(): Failed"<<std::endl; @@ -537,6 +534,7 @@ void ShaderSource::processQueue() /* Fetch shaders */ + //NOTE this is only thread safe for ONE consumer thread! if(!m_get_shader_queue.empty()){ GetRequest<std::string, u32, u8, u8> request = m_get_shader_queue.pop(); |