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

Reply via email to