The threads demo would display negative prime numbers
on MacOS X; this appears to be a MacOS X bug, but we added a workaround to "fix" this (STR #1138) git-svn-id: file:///fltk/svn/fltk/branches/branch-1.1@4740 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
This commit is contained in:
parent
e0a8bd61e7
commit
741322a01a
3
CHANGES
3
CHANGES
@ -3,6 +3,9 @@ CHANGES IN FLTK 1.1.7
|
|||||||
- Documentation fixes (STR #571, STR #648, STR #692, STR
|
- Documentation fixes (STR #571, STR #648, STR #692, STR
|
||||||
#730, STR #744, STR #745, STR #931, STR #942, STR #960,
|
#730, STR #744, STR #745, STR #931, STR #942, STR #960,
|
||||||
STR #969)
|
STR #969)
|
||||||
|
- The threads demo would display negative prime numbers
|
||||||
|
on MacOS X; this appears to be a MacOS X bug, but we
|
||||||
|
added a workaround to "fix" this (STR #1138)
|
||||||
- Fl::dnd() now sets the content type of the drag to
|
- Fl::dnd() now sets the content type of the drag to
|
||||||
"text/uri-list" when it sees the dragged text is
|
"text/uri-list" when it sees the dragged text is
|
||||||
composed of URIs.
|
composed of URIs.
|
||||||
|
@ -61,9 +61,10 @@ void* prime_func(void* p)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// very simple prime number calculator !
|
// very simple prime number calculator !
|
||||||
for (; ; n+= step) {
|
for (;;) {
|
||||||
int p;
|
int p;
|
||||||
int hn = (int)sqrt((double)n);
|
int hn = (int)sqrt((double)n);
|
||||||
|
|
||||||
for (p=3; p<=hn; p+=2) if ( n%p == 0 ) break;
|
for (p=3; p<=hn; p+=2) if ( n%p == 0 ) break;
|
||||||
if (p >= hn) {
|
if (p >= hn) {
|
||||||
char s[128];
|
char s[128];
|
||||||
@ -72,8 +73,16 @@ void* prime_func(void* p)
|
|||||||
browser->add(s);
|
browser->add(s);
|
||||||
browser->bottomline(browser->size());
|
browser->bottomline(browser->size());
|
||||||
if (n > value->value()) value->value(n);
|
if (n > value->value()) value->value(n);
|
||||||
|
n += step;
|
||||||
Fl::unlock();
|
Fl::unlock();
|
||||||
Fl::awake((void*) (browser == browser1? p:0)); // Cause the browser to redraw ...
|
Fl::awake((void*) (browser == browser1? p:0)); // Cause the browser to redraw ...
|
||||||
|
} else {
|
||||||
|
// This should not be necessary since "n" and "step" a local variables,
|
||||||
|
// however it appears that at least MacOS X has some threading issues
|
||||||
|
// that cause semi-random corruption of the (stack) variables.
|
||||||
|
Fl::lock();
|
||||||
|
n += step;
|
||||||
|
Fl::unlock();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -50,9 +50,8 @@
|
|||||||
|
|
||||||
typedef pthread_t Fl_Thread;
|
typedef pthread_t Fl_Thread;
|
||||||
|
|
||||||
static int fl_create_thread(Fl_Thread& t, void *(*f) (void *), void* p)
|
static int fl_create_thread(Fl_Thread& t, void *(*f) (void *), void* p) {
|
||||||
{
|
return pthread_create((pthread_t*)&t, &attr, f, p);
|
||||||
return pthread_create((pthread_t*)&t, 0, f, p);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# elif defined(WIN32) && !defined(__WATCOMC__) // Use Windows threading...
|
# elif defined(WIN32) && !defined(__WATCOMC__) // Use Windows threading...
|
||||||
|
Loading…
Reference in New Issue
Block a user