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