summaryrefslogtreecommitdiff
path: root/src/shader.cpp
diff options
context:
space:
mode:
authorsapier <Sapier at GMX dot net>2014-01-06 12:45:42 +0100
committersapier <Sapier at GMX dot net>2014-01-10 10:10:45 +0100
commit8b0b857eaaa50c6ec217a46c0577395c78ec04c7 (patch)
treeb9fd5e1edb099aee1498b29a43702568a283aa34 /src/shader.cpp
parent10fdbf737513e48bfcfb9e90fe243dcd989c0476 (diff)
downloadminetest-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.cpp24
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();