Mercurial > love-experiments
diff src/modules/thread/threads.cpp @ 1098:a74672ba1320 minor
Merge in channels from love-experiments
Rewritten love.thread and changed communication
method from weird system before, to channels.
| author | Bart van Strien <bart.bes+projects@gmail.com> |
|---|---|
| date | Wed, 04 Jul 2012 17:15:16 +0200 |
| parents | 86a44f2bc38f |
| children | 730ed5f01ab0 |
line wrap: on
line diff
--- a/src/modules/thread/threads.cpp Wed Jul 04 14:41:03 2012 +0200 +++ b/src/modules/thread/threads.cpp Wed Jul 04 17:15:16 2012 +0200 @@ -20,28 +20,51 @@ #include "threads.h" -#if LOVE_THREADS == LOVE_THREADS_POSIX -# include "posix/threads.cpp" -#elif LOVE_THREADS == LOVE_THREADS_WIN32 -# include "win32/threads.cpp" -#elif LOVE_THREADS == LOVE_THREADS_SDL -# include "sdl/threads.cpp" -#endif - namespace love { namespace thread { -const char *threadAPI() +Lock::Lock(Mutex *m) + : mutex(m) +{ + mutex->lock(); +} + +Lock::Lock(Mutex &m) + : mutex(&m) +{ + mutex->lock(); +} + +Lock::~Lock() +{ + mutex->unlock(); +} + +Threadable::Threadable() { -#if LOVE_THREADS == LOVE_THREADS_POSIX - return "posix"; -#elif LOVE_THREADS == LOVE_THREADS_WIN32 - return "win32"; -#elif LOVE_THREADS == LOVE_THREADS_SDL - return "sdl"; -#endif + owner = newThread(this); +} + +Threadable::~Threadable() +{ + delete owner; +} + +bool Threadable::start() +{ + return owner->start(); +} + +void Threadable::wait() +{ + owner->wait(); +} + +void Threadable::kill() +{ + owner->kill(); } } // thread
