am 04befcc9: am 2cd8a6d9: am dc84793a: Merge "opengles emulator: object name manager name generation"
* commit '04befcc927a9f1d9c277ad0799d10b62c8a2bf76': opengles emulator: object name manager name generation
This commit is contained in:
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
#include <map>
|
||||
#include <GLcommon/objectNameManager.h>
|
||||
#include <GLcommon/GLEScontext.h>
|
||||
|
||||
|
||||
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<NamedObjectType, ObjectLocalName> ObjectIDPair;
|
||||
typedef std::map<ObjectIDPair, ObjectDataPtr> ObjectDataMap;
|
||||
|
||||
|
||||
@@ -118,48 +118,13 @@ private:
|
||||
class GlobalNameSpace
|
||||
{
|
||||
public:
|
||||
GlobalNameSpace()
|
||||
{
|
||||
mutex_init(&m_lock);
|
||||
|
||||
for (int i=0; i<NUM_OBJECT_TYPES; i++) {
|
||||
m_nameSpace[i] = new NameSpace((NamedObjectType)i, NULL);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
~GlobalNameSpace()
|
||||
{
|
||||
mutex_lock(&m_lock);
|
||||
for (int i=0; i<NUM_OBJECT_TYPES; i++) {
|
||||
delete m_nameSpace[i];
|
||||
}
|
||||
mutex_unlock(&m_lock);
|
||||
mutex_destroy(&m_lock);
|
||||
}
|
||||
|
||||
unsigned int genName(NamedObjectType p_type)
|
||||
{
|
||||
if ( p_type >= 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];
|
||||
};
|
||||
|
||||
//
|
||||
|
||||
Reference in New Issue
Block a user