On 30.05.2011 15:39, MacArthur, Ian (SELEX GALILEO, UK) wrote: > OK: I'm pretty sure that threads.h is the culprit here - it explicitly > #includes several system header files from inside the namespace fltk3 > {...} and that seems to be the issue. > > Moving those #include out of the namespace{} and all seems to compile > just fine...
Yep, that works. Congratulation, you're now a fltk3 developer! ;-) But... why should all this thread stuff be in the fltk3 namespace at all? I *removed* all that fltk3 namespace stuff from threads.h, and here is my patch (some lines may wrap): --- snip --- Index: test/threads.cxx =================================================================== --- test/threads.cxx (revision 8761) +++ test/threads.cxx (working copy) @@ -37,7 +37,7 @@ # include <stdio.h> # include <math.h> -fltk3::Thread prime_thread; +Thread prime_thread; fltk3::Browser *browser1, *browser2; fltk3::ValueOutput *value1, *value2; @@ -145,15 +145,15 @@ // Start threads... // One thread displaying in one browser - fltk3::create_thread(prime_thread, prime_func, browser1); + create_thread(prime_thread, prime_func, browser1); // Several threads displaying in another browser - fltk3::create_thread(prime_thread, prime_func, browser2); - fltk3::create_thread(prime_thread, prime_func, browser2); - fltk3::create_thread(prime_thread, prime_func, browser2); - fltk3::create_thread(prime_thread, prime_func, browser2); - fltk3::create_thread(prime_thread, prime_func, browser2); - fltk3::create_thread(prime_thread, prime_func, browser2); + create_thread(prime_thread, prime_func, browser2); + create_thread(prime_thread, prime_func, browser2); + create_thread(prime_thread, prime_func, browser2); + create_thread(prime_thread, prime_func, browser2); + create_thread(prime_thread, prime_func, browser2); + create_thread(prime_thread, prime_func, browser2); fltk3::run(); Index: test/threads.h =================================================================== --- test/threads.h (revision 8761) +++ test/threads.h (working copy) @@ -48,44 +48,32 @@ # include <pthread.h> -namespace fltk3 { - typedef pthread_t Thread; static int create_thread(Thread& t, void *(*f) (void *), void* p) { return pthread_create((pthread_t*)&t, 0, f, p); } // create_thread -} // namespace fltk3 - # elif defined(WIN32) && !defined(__WATCOMC__) // Use Windows threading... # include <windows.h> # include <process.h> -namespace fltk3 { - typedef unsigned long Thread; static int create_thread(Thread& t, void *(*f) (void *), void* p) { return t = (Thread)_beginthread((void( __cdecl * )( void * ))f, 0, p); } // create_thread -} // namespace fltk3 - # elif defined(__WATCOMC__) # include <process.h> -namespace fltk3 { - typedef unsigned long Thread; static int create_thread(Thread& t, void *(*f) (void *), void* p) { return t = (Thread)_beginthread((void(* )( void * ))f, 32000, p); } // create_thread -} // namespace fltk3 - # endif // !HAVE_PTHREAD_H #endif // !Threads_h --- snip --- Wouldn't this be even better? Albrecht _______________________________________________ fltk-dev mailing list fltk-dev@easysw.com http://lists.easysw.com/mailman/listinfo/fltk-dev