Mac OS: put idle processing under an alloc/release pair of an NSAutoreleasePool.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@10066 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
This commit is contained in:
parent
35bdf594a8
commit
d7cc67d2f1
15
src/Fl.cxx
15
src/Fl.cxx
@ -67,7 +67,7 @@ void fl_cleanup_pens(void);
|
||||
void fl_release_dc(HWND,HDC);
|
||||
void fl_cleanup_dc_list(void);
|
||||
#elif defined(__APPLE__)
|
||||
extern double fl_mac_flush_and_wait(double time_to_wait, char in_idle);
|
||||
extern double fl_mac_flush_and_wait(double time_to_wait);
|
||||
#endif // WIN32
|
||||
|
||||
//
|
||||
@ -430,7 +430,7 @@ static void run_checks()
|
||||
}
|
||||
}
|
||||
|
||||
#ifndef WIN32
|
||||
#if !defined(WIN32) && !defined(__APPLE__)
|
||||
static char in_idle;
|
||||
#endif
|
||||
|
||||
@ -520,16 +520,7 @@ double Fl::wait(double time_to_wait) {
|
||||
#elif defined(__APPLE__)
|
||||
|
||||
run_checks();
|
||||
if (idle) {
|
||||
if (!in_idle) {
|
||||
in_idle = 1;
|
||||
idle();
|
||||
in_idle = 0;
|
||||
}
|
||||
// the idle function may turn off idle, we can then wait:
|
||||
if (idle) time_to_wait = 0.0;
|
||||
}
|
||||
return fl_mac_flush_and_wait(time_to_wait, in_idle);
|
||||
return fl_mac_flush_and_wait(time_to_wait);
|
||||
|
||||
#else
|
||||
|
||||
|
@ -752,8 +752,18 @@ int fl_wait( double time )
|
||||
return (got_events);
|
||||
}
|
||||
|
||||
double fl_mac_flush_and_wait(double time_to_wait, char in_idle) {
|
||||
double fl_mac_flush_and_wait(double time_to_wait) {
|
||||
static int in_idle = 0;
|
||||
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
|
||||
if (Fl::idle) {
|
||||
if (!in_idle) {
|
||||
in_idle = 1;
|
||||
Fl::idle();
|
||||
in_idle = 0;
|
||||
}
|
||||
// the idle function may turn off idle, we can then wait:
|
||||
if (Fl::idle) time_to_wait = 0.0;
|
||||
}
|
||||
Fl::flush();
|
||||
if (Fl::idle && !in_idle) // 'idle' may have been set within flush()
|
||||
time_to_wait = 0.0;
|
||||
|
Loading…
Reference in New Issue
Block a user