diff options
author | Thomas White <taw27@cam.ac.uk> | 2008-11-24 15:27:54 +0000 |
---|---|---|
committer | Thomas White <taw27@cam.ac.uk> | 2008-11-24 15:27:54 +0000 |
commit | 54d3959c6d4f0af9a278c957e1459f0e125243c3 (patch) | |
tree | 692a95df10cfcdd7b583d0d9f7d30fe7065d649c | |
parent | 9ed5bec39c0fcbed0f6d970f938d10244e9ef67c (diff) |
Make the accel thread belong to "main", join it on exit
-rw-r--r-- | src/accelerometers.c | 8 | ||||
-rw-r--r-- | src/accelerometers.h | 4 | ||||
-rw-r--r-- | src/main.c | 5 |
3 files changed, 9 insertions, 8 deletions
diff --git a/src/accelerometers.c b/src/accelerometers.c index e1e3230..fbc749d 100644 --- a/src/accelerometers.c +++ b/src/accelerometers.c @@ -159,11 +159,7 @@ static void *accel_work(void *data) { } -void accelerometer_start() { - - GThread *work_thread; - - work_thread = g_thread_create(accel_work, NULL, TRUE, NULL); - +GThread *accelerometer_start() { + return g_thread_create(accel_work, NULL, TRUE, NULL); } diff --git a/src/accelerometers.h b/src/accelerometers.h index 602dd1e..5f6daf2 100644 --- a/src/accelerometers.h +++ b/src/accelerometers.h @@ -29,11 +29,13 @@ #include <config.h> #endif +#include <glib.h> + #include "types.h" extern AccelHandle *accelerometer_open(void); extern void accelerometer_update(AccelHandle *accel); -extern void accelerometer_start(void); +extern GThread *accelerometer_start(void); #endif /* ACCELEROMETERS_H */ @@ -40,6 +40,7 @@ int main(int argc, char *argv[]) { MainWindow *mw; + GThread *accel_thread; gtk_init(&argc, &argv); g_thread_init(NULL); @@ -51,7 +52,7 @@ int main(int argc, char *argv[]) { atexit(SDL_Quit); /* Start the accelerometer thread */ - accelerometer_start(); + accel_thread = accelerometer_start(); /* Open the window */ mw = mainwindow_open(); @@ -61,6 +62,8 @@ int main(int argc, char *argv[]) { gtk_main(); } + g_thread_join(accel_thread); + return 0; } |