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
[email protected]
http://lists.easysw.com/mailman/listinfo/fltk-dev