Ensure the shared symbol table levels are read-only to make multi-threading safe. Also removed inadvertent extra copies of the symbol table shared across all stages.

git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22939 e7fa87d3-cd2b-0410-9028-fcbf551c1848
This commit is contained in:
John Kessenich
2013-09-06 19:52:57 +00:00
parent 69f4b517c2
commit 38f3b890de
14 changed files with 230 additions and 125 deletions

View File

@@ -41,27 +41,36 @@
namespace glslang {
class TWorkItem {
public:
TWorkItem() { }
explicit TWorkItem(const std::string& s) :
name(s) { }
std::string name;
std::string results;
};
class TWorklist {
public:
TWorklist() { }
virtual ~TWorklist() { }
void add(const std::string& s)
void add(TWorkItem* item)
{
GetGlobalLock();
worklist.push_back(s);
worklist.push_back(item);
ReleaseGlobalLock();
}
bool remove(std::string& s)
bool remove(TWorkItem*& item)
{
GetGlobalLock();
if (worklist.empty())
return false;
s = worklist.front();
item = worklist.front();
worklist.pop_front();
ReleaseGlobalLock();
@@ -69,13 +78,18 @@ namespace glslang {
return true;
}
int size()
{
return worklist.size();
}
bool empty()
{
return worklist.empty();
}
protected:
std::list<std::string> worklist;
std::list<TWorkItem*> worklist;
};
} // end namespace glslang