Changed getThreads so that the caller must allocate the memory.

This commit is contained in:
rude
2010-02-24 21:34:55 +01:00
parent 368765820e
commit 5fca0e9b33
3 changed files with 12 additions and 7 deletions
+6 -4
View File
@@ -303,16 +303,18 @@ namespace sdl
return i->second;
}
Thread **ThreadModule::getThreads()
void ThreadModule::getThreads(Thread ** list)
{
Thread **list = new Thread*[threads.size()+1];
int c = 0;
for (threadlist_t::iterator i = threads.begin(); i != threads.end(); i++, c++)
{
list[c] = i->second;
}
list[threads.size()] = 0;
return list;
}
unsigned ThreadModule::getThreadCount() const
{
return threads.size();
}
void ThreadModule::unregister(const std::string & name)
+2 -1
View File
@@ -127,8 +127,9 @@ namespace sdl
ThreadModule();
virtual ~ThreadModule();
Thread *newThread(const std::string & name, love::Data *data);
Thread **getThreads();
void getThreads(Thread ** list);
Thread *getThread(const std::string & name);
unsigned getThreadCount() const;
void unregister(const std::string & name);
const char *getName() const;
}; // ThreadModule
+4 -2
View File
@@ -260,9 +260,11 @@ namespace sdl
int w_getThreads(lua_State *L)
{
Thread **list = instance->getThreads();
unsigned count = instance->getThreadCount();
Thread **list = new Thread*[count];
instance->getThreads(list);
lua_newtable(L);
for (int i = 0; list[i] != 0; i++)
for (unsigned int i = 0; i<count; i++)
{
luax_newtype(L, "Thread", THREAD_THREAD_T, (void*) list[i]);
list[i]->lock();