From 9666ad922524b617947590aed4c6fde5febab53a Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Wed, 29 Sep 2010 17:54:03 -0400 Subject: Make dmnsn_new_thread() bail out on errors. --- libdimension/png.c | 12 ++---------- libdimension/raytrace.c | 6 +----- libdimension/threads.c | 6 ++++-- libdimension/threads.h | 4 ++-- 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 */ -- cgit v1.2.3