try to fix Windows freezing problem
svn: r14867
This commit is contained in:
parent
67a8ebecdb
commit
e51ca461ae
|
@ -180,6 +180,7 @@ static BOOL CALLBACK CheckWindow(HWND wnd, LPARAM param)
|
|||
info->remove ? PM_REMOVE : PM_NOREMOVE)) {
|
||||
info->wnd = wnd;
|
||||
info->c_return = c;
|
||||
scheme_notify_sleep_progress();
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
@ -217,6 +218,7 @@ int FindReady(MrEdContext *c, MSG *msg, int remove, MrEdContext **c_return)
|
|||
while (PeekMessage(&pmsg, NULL, 0x4000, 0xFFFF, PM_REMOVE)) {
|
||||
wxTranslateMessage(&pmsg);
|
||||
DispatchMessage(&pmsg);
|
||||
scheme_notify_sleep_progress();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -47,6 +47,7 @@ scheme_in_main_thread
|
|||
scheme_cancel_sleep
|
||||
scheme_start_sleeper_thread
|
||||
scheme_end_sleeper_thread
|
||||
scheme_notify_sleep_progress
|
||||
scheme_make_thread_cell
|
||||
scheme_thread_cell_get
|
||||
scheme_thread_cell_set
|
||||
|
|
|
@ -47,6 +47,7 @@ scheme_in_main_thread
|
|||
scheme_cancel_sleep
|
||||
scheme_start_sleeper_thread
|
||||
scheme_end_sleeper_thread
|
||||
scheme_notify_sleep_progress
|
||||
scheme_make_thread_cell
|
||||
scheme_thread_cell_get
|
||||
scheme_thread_cell_set
|
||||
|
|
|
@ -49,6 +49,7 @@ EXPORTS
|
|||
scheme_cancel_sleep
|
||||
scheme_start_sleeper_thread
|
||||
scheme_end_sleeper_thread
|
||||
scheme_notify_sleep_progress
|
||||
scheme_make_thread_cell
|
||||
scheme_thread_cell_get
|
||||
scheme_thread_cell_set
|
||||
|
|
|
@ -49,6 +49,7 @@ EXPORTS
|
|||
scheme_cancel_sleep
|
||||
scheme_start_sleeper_thread
|
||||
scheme_end_sleeper_thread
|
||||
scheme_notify_sleep_progress
|
||||
scheme_make_thread_cell
|
||||
scheme_thread_cell_get
|
||||
scheme_thread_cell_set
|
||||
|
|
|
@ -8061,14 +8061,14 @@ static void clean_up_wait(long result, OS_SEMAPHORE_TYPE *array,
|
|||
static int made_progress;
|
||||
static DWORD max_sleep_time;
|
||||
|
||||
void scheme_notify_sleep_progres()
|
||||
void scheme_notify_sleep_progress()
|
||||
{
|
||||
made_progress = 1;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
void scheme_notify_sleep_progres()
|
||||
void scheme_notify_sleep_progress()
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -125,6 +125,8 @@ MZ_EXTERN void scheme_cancel_sleep(void);
|
|||
MZ_EXTERN void scheme_start_sleeper_thread(void (*mzsleep)(float seconds, void *fds), float secs, void *fds, int hit_fd);
|
||||
MZ_EXTERN void scheme_end_sleeper_thread();
|
||||
|
||||
MZ_EXTERN void scheme_notify_sleep_progress();
|
||||
|
||||
MZ_EXTERN Scheme_Object *scheme_make_thread_cell(Scheme_Object *def_val, int inherited);
|
||||
MZ_EXTERN Scheme_Object *scheme_thread_cell_get(Scheme_Object *cell, Scheme_Thread_Cell_Table *cells);
|
||||
MZ_EXTERN void scheme_thread_cell_set(Scheme_Object *cell, Scheme_Thread_Cell_Table *cells, Scheme_Object *v);
|
||||
|
|
|
@ -99,6 +99,7 @@ int (*scheme_in_main_thread)(void);
|
|||
void (*scheme_cancel_sleep)(void);
|
||||
void (*scheme_start_sleeper_thread)(void (*mzsleep)(float seconds, void *fds), float secs, void *fds, int hit_fd);
|
||||
void (*scheme_end_sleeper_thread)();
|
||||
void (*scheme_notify_sleep_progress)();
|
||||
Scheme_Object *(*scheme_make_thread_cell)(Scheme_Object *def_val, int inherited);
|
||||
Scheme_Object *(*scheme_thread_cell_get)(Scheme_Object *cell, Scheme_Thread_Cell_Table *cells);
|
||||
void (*scheme_thread_cell_set)(Scheme_Object *cell, Scheme_Thread_Cell_Table *cells, Scheme_Object *v);
|
||||
|
|
|
@ -55,6 +55,7 @@
|
|||
scheme_extension_table->scheme_cancel_sleep = scheme_cancel_sleep;
|
||||
scheme_extension_table->scheme_start_sleeper_thread = scheme_start_sleeper_thread;
|
||||
scheme_extension_table->scheme_end_sleeper_thread = scheme_end_sleeper_thread;
|
||||
scheme_extension_table->scheme_notify_sleep_progress = scheme_notify_sleep_progress;
|
||||
scheme_extension_table->scheme_make_thread_cell = scheme_make_thread_cell;
|
||||
scheme_extension_table->scheme_thread_cell_get = scheme_thread_cell_get;
|
||||
scheme_extension_table->scheme_thread_cell_set = scheme_thread_cell_set;
|
||||
|
|
|
@ -55,6 +55,7 @@
|
|||
#define scheme_cancel_sleep (scheme_extension_table->scheme_cancel_sleep)
|
||||
#define scheme_start_sleeper_thread (scheme_extension_table->scheme_start_sleeper_thread)
|
||||
#define scheme_end_sleeper_thread (scheme_extension_table->scheme_end_sleeper_thread)
|
||||
#define scheme_notify_sleep_progress (scheme_extension_table->scheme_notify_sleep_progress)
|
||||
#define scheme_make_thread_cell (scheme_extension_table->scheme_make_thread_cell)
|
||||
#define scheme_thread_cell_get (scheme_extension_table->scheme_thread_cell_get)
|
||||
#define scheme_thread_cell_set (scheme_extension_table->scheme_thread_cell_set)
|
||||
|
|
|
@ -118,7 +118,6 @@ extern void *scheme_gmp_tls_load(long *s);
|
|||
extern void scheme_gmp_tls_unload(long *s, void *p);
|
||||
extern void scheme_gmp_tls_snapshot(long *s, long *save);
|
||||
extern void scheme_gmp_tls_restore_snapshot(long *s, void *data, long *save, int do_free);
|
||||
extern void scheme_notify_sleep_progres();
|
||||
|
||||
static void check_ready_break();
|
||||
|
||||
|
@ -3493,7 +3492,7 @@ static int check_sleep(int need_activity, int sleep_now)
|
|||
p2 = scheme_first_thread;
|
||||
while (p2) {
|
||||
if (p2->ran_some) {
|
||||
scheme_notify_sleep_progres();
|
||||
scheme_notify_sleep_progress();
|
||||
p2->ran_some = 0;
|
||||
}
|
||||
p2 = p2->next;
|
||||
|
|
Loading…
Reference in New Issue
Block a user