diff --git a/tools/emulator/opengl/host/libs/Translator/GLcommon/objectNameManager.cpp b/tools/emulator/opengl/host/libs/Translator/GLcommon/objectNameManager.cpp index ea0c0dc7e..950544fbd 100644 --- a/tools/emulator/opengl/host/libs/Translator/GLcommon/objectNameManager.cpp +++ b/tools/emulator/opengl/host/libs/Translator/GLcommon/objectNameManager.cpp @@ -15,6 +15,7 @@ */ #include #include +#include NameSpace::NameSpace(NamedObjectType p_type, GlobalNameSpace *globalNameSpace) : @@ -105,6 +106,50 @@ NameSpace::replaceGlobalName(ObjectLocalName p_localName, unsigned int p_globalN } } + +GlobalNameSpace::GlobalNameSpace() +{ + mutex_init(&m_lock); +} + +GlobalNameSpace::~GlobalNameSpace() +{ + mutex_destroy(&m_lock); +} + +unsigned int +GlobalNameSpace::genName(NamedObjectType p_type) +{ + if ( p_type >= NUM_OBJECT_TYPES ) return 0; + unsigned int name = 0; + + mutex_lock(&m_lock); + switch (p_type) { + case VERTEXBUFFER: + GLEScontext::dispatcher().glGenBuffers(1,&name); + break; + case TEXTURE: + GLEScontext::dispatcher().glGenTextures(1,&name); + break; + case RENDERBUFFER: + GLEScontext::dispatcher().glGenRenderbuffersEXT(1,&name); + break; + case FRAMEBUFFER: + GLEScontext::dispatcher().glGenFramebuffersEXT(1,&name); + break; + case SHADER: //objects in shader namepace are not handled + default: + name = 0; + } + mutex_unlock(&m_lock); + return name; +} + +void +GlobalNameSpace::deleteName(NamedObjectType p_type, unsigned int p_name) +{ +} + typedef std::pair ObjectIDPair; typedef std::map ObjectDataMap; diff --git a/tools/emulator/opengl/host/libs/Translator/include/GLcommon/objectNameManager.h b/tools/emulator/opengl/host/libs/Translator/include/GLcommon/objectNameManager.h index 726f241d1..833b38240 100644 --- a/tools/emulator/opengl/host/libs/Translator/include/GLcommon/objectNameManager.h +++ b/tools/emulator/opengl/host/libs/Translator/include/GLcommon/objectNameManager.h @@ -118,48 +118,13 @@ private: class GlobalNameSpace { public: - GlobalNameSpace() - { - mutex_init(&m_lock); - - for (int i=0; i= NUM_OBJECT_TYPES ) return 0; - - mutex_lock(&m_lock); - unsigned int name = m_nameSpace[p_type]->genName(0, false,true); - mutex_unlock(&m_lock); - return name; - } - - void deleteName(NamedObjectType p_type, unsigned int p_name) - { - if ( p_type >= NUM_OBJECT_TYPES ) return; - - mutex_lock(&m_lock); - m_nameSpace[p_type]->deleteName(p_name); - mutex_unlock(&m_lock); - } + GlobalNameSpace(); + ~GlobalNameSpace(); + unsigned int genName(NamedObjectType p_type); + void deleteName(NamedObjectType p_type, unsigned int p_name); private: mutex_t m_lock; - NameSpace *m_nameSpace[NUM_OBJECT_TYPES]; }; //