Ver código fonte

Lock mutexes in ResourceLoader

Daniele Bartolini 12 anos atrás
pai
commit
b7971278cd

+ 4 - 0
engine/resource/ResourceLoader.cpp

@@ -52,13 +52,17 @@ void ResourceLoader::load(ResourceId resource)
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 uint32_t ResourceLoader::remaining() const
 uint32_t ResourceLoader::remaining() const
 {
 {
+	m_load_mutex.lock();
 	return m_load_queue.size();
 	return m_load_queue.size();
+	m_load_mutex.unlock();
 }
 }
 
 
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 uint32_t ResourceLoader::num_loaded() const
 uint32_t ResourceLoader::num_loaded() const
 {
 {
+	m_done_mutex.lock();
 	return m_done_queue.size();
 	return m_done_queue.size();
+	m_done_mutex.unlock();
 }
 }
 
 
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------

+ 2 - 2
engine/resource/ResourceLoader.h

@@ -82,8 +82,8 @@ private:
 
 
 	Queue<ResourceId>		m_load_queue;
 	Queue<ResourceId>		m_load_queue;
 	List<LoadedResource>	m_done_queue;
 	List<LoadedResource>	m_done_queue;
-	Mutex					m_load_mutex;
-	Mutex					m_done_mutex;
+	mutable Mutex			m_load_mutex;
+	mutable Mutex			m_done_mutex;
 	Cond					m_load_requests;
 	Cond					m_load_requests;
 };
 };