summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTavian Barnes <tavianator@gmail.com>2010-09-29 17:54:03 -0400
committerTavian Barnes <tavianator@gmail.com>2010-09-29 19:03:10 -0400
commit9666ad922524b617947590aed4c6fde5febab53a (patch)
treeb51c459670fac0f1d36b70e055f31ce1d641c4ef
parentcec47afae217cea36779d7dea4437b35dee63be2 (diff)
downloaddimension-9666ad922524b617947590aed4c6fde5febab53a.tar.xz
Make dmnsn_new_thread() bail out on errors.
-rw-r--r--libdimension/png.c12
-rw-r--r--libdimension/raytrace.c6
-rw-r--r--libdimension/threads.c6
-rw-r--r--libdimension/threads.h4
4 files changed, 9 insertions, 19 deletions
diff --git a/libdimension/png.c b/libdimension/png.c
index 189c998..ed98210 100644
--- a/libdimension/png.c
+++ b/libdimension/png.c
@@ -140,11 +140,7 @@ dmnsn_png_write_canvas_async(const dmnsn_canvas *canvas, FILE *file)
payload->file = file;
/* Create the worker thread */
- if (dmnsn_new_thread(progress, NULL, &dmnsn_png_write_canvas_thread, payload)
- != 0)
- {
- dmnsn_error(DMNSN_SEVERITY_HIGH, "Couldn't start worker thread.");
- }
+ dmnsn_new_thread(progress, NULL, &dmnsn_png_write_canvas_thread, payload);
return progress;
}
@@ -172,11 +168,7 @@ dmnsn_png_read_canvas_async(dmnsn_canvas **canvas, FILE *file)
payload->file = file;
/* Create the worker thread */
- if (dmnsn_new_thread(progress, NULL, &dmnsn_png_read_canvas_thread, payload)
- != 0)
- {
- dmnsn_error(DMNSN_SEVERITY_HIGH, "Couldn't start worker thread.");
- }
+ dmnsn_new_thread(progress, NULL, &dmnsn_png_read_canvas_thread, payload);
return progress;
}
diff --git a/libdimension/raytrace.c b/libdimension/raytrace.c
index 9822c8c..396c8b4 100644
--- a/libdimension/raytrace.c
+++ b/libdimension/raytrace.c
@@ -58,11 +58,7 @@ dmnsn_raytrace_scene_async(dmnsn_scene *scene)
payload->progress = progress;
payload->scene = scene;
- if (dmnsn_new_thread(progress, NULL, &dmnsn_raytrace_scene_thread, payload)
- != 0)
- {
- dmnsn_error(DMNSN_SEVERITY_HIGH, "Couldn't start worker thread.");
- }
+ dmnsn_new_thread(progress, NULL, &dmnsn_raytrace_scene_thread, payload);
return progress;
}
diff --git a/libdimension/threads.c b/libdimension/threads.c
index 22a5b9a..1f1acd5 100644
--- a/libdimension/threads.c
+++ b/libdimension/threads.c
@@ -46,7 +46,7 @@ dmnsn_thread(void *arg)
return ret;
}
-int
+void
dmnsn_new_thread(dmnsn_progress *progress, const pthread_attr_t *attr,
dmnsn_thread_fn *thread_fn, void *arg)
{
@@ -55,5 +55,7 @@ dmnsn_new_thread(dmnsn_progress *progress, const pthread_attr_t *attr,
payload->arg = arg;
payload->progress = progress;
- return pthread_create(&progress->thread, attr, &dmnsn_thread, payload);
+ if (pthread_create(&progress->thread, attr, &dmnsn_thread, payload) != 0) {
+ dmnsn_error(DMNSN_SEVERITY_HIGH, "Couldn't start thread.");
+ }
}
diff --git a/libdimension/threads.h b/libdimension/threads.h
index 5884fae..00be0a9 100644
--- a/libdimension/threads.h
+++ b/libdimension/threads.h
@@ -26,7 +26,7 @@
typedef int dmnsn_thread_fn(void *ptr);
/* Creates a thread that cleans up after itself on errors */
-int dmnsn_new_thread(dmnsn_progress *progress, const pthread_attr_t *attr,
- dmnsn_thread_fn *thread_fn, void *arg);
+void dmnsn_new_thread(dmnsn_progress *progress, const pthread_attr_t *attr,
+ dmnsn_thread_fn *thread_fn, void *arg);
#endif /* DIMENSION_IMPL_THREADS_H */