This commit is contained in:
Branimir Karadžić 2018-09-10 17:45:23 -07:00
parent 0dd9d94289
commit f0772da653
1 changed files with 10 additions and 10 deletions

View File

@ -361,6 +361,8 @@ struct SpriteT
SpriteHandle create(uint16_t _width, uint16_t _height)
{
bx::MutexScope lock(m_lock);
SpriteHandle handle = { bx::kInvalidHandle };
if (m_handleAlloc.getNumHandles() < m_handleAlloc.getMaxHandles() )
@ -396,6 +398,7 @@ struct SpriteT
return m_pack[_sprite.idx];
}
bx::Mutex m_lock;
bx::HandleAllocT<MaxHandlesT> m_handleAlloc;
Pack2D m_pack[MaxHandlesT];
RectPack2DT<256> m_ra;
@ -412,7 +415,11 @@ struct GeometryT
{
BX_UNUSED(_numVertices, _vertices, _numIndices, _indices, _index32);
GeometryHandle handle = { m_handleAlloc.alloc() };
GeometryHandle handle;
{
bx::MutexScope lock(m_lock);
handle = { m_handleAlloc.alloc() };
}
if (isValid(handle) )
{
@ -462,6 +469,7 @@ struct GeometryT
void destroy(GeometryHandle _handle)
{
bx::MutexScope lock(m_lock);
Geometry& geometry = m_geometry[_handle.idx];
bgfx::destroy(geometry.m_vbh);
bgfx::destroy(geometry.m_ibh);
@ -484,6 +492,7 @@ struct GeometryT
uint32_t m_topologyNumIndices[2];
};
bx::Mutex m_lock;
bx::HandleAllocT<MaxHandlesT> m_handleAlloc;
Geometry m_geometry[MaxHandlesT];
};
@ -944,8 +953,6 @@ struct DebugDrawShared
SpriteHandle createSprite(uint16_t _width, uint16_t _height, const void* _data)
{
bx::MutexScope lock(m_lock);
SpriteHandle handle = m_sprite.create(_width, _height);
if (isValid(handle) )
@ -968,27 +975,20 @@ struct DebugDrawShared
void destroy(SpriteHandle _handle)
{
bx::MutexScope lock(m_lock);
m_sprite.destroy(_handle);
}
GeometryHandle createGeometry(uint32_t _numVertices, const DdVertex* _vertices, uint32_t _numIndices, const void* _indices, bool _index32)
{
bx::MutexScope lock(m_lock);
return m_geometry.create(_numVertices, _vertices, _numIndices, _indices, _index32);
}
void destroy(GeometryHandle _handle)
{
bx::MutexScope lock(m_lock);
m_geometry.destroy(_handle);
}
bx::AllocatorI* m_allocator;
bx::Mutex m_lock;
Sprite m_sprite;
Geometry m_geometry;