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->remove ? PM_REMOVE : PM_NOREMOVE)) {
|
||||||
info->wnd = wnd;
|
info->wnd = wnd;
|
||||||
info->c_return = c;
|
info->c_return = c;
|
||||||
|
scheme_notify_sleep_progress();
|
||||||
return FALSE;
|
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)) {
|
while (PeekMessage(&pmsg, NULL, 0x4000, 0xFFFF, PM_REMOVE)) {
|
||||||
wxTranslateMessage(&pmsg);
|
wxTranslateMessage(&pmsg);
|
||||||
DispatchMessage(&pmsg);
|
DispatchMessage(&pmsg);
|
||||||
|
scheme_notify_sleep_progress();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -47,6 +47,7 @@ scheme_in_main_thread
|
||||||
scheme_cancel_sleep
|
scheme_cancel_sleep
|
||||||
scheme_start_sleeper_thread
|
scheme_start_sleeper_thread
|
||||||
scheme_end_sleeper_thread
|
scheme_end_sleeper_thread
|
||||||
|
scheme_notify_sleep_progress
|
||||||
scheme_make_thread_cell
|
scheme_make_thread_cell
|
||||||
scheme_thread_cell_get
|
scheme_thread_cell_get
|
||||||
scheme_thread_cell_set
|
scheme_thread_cell_set
|
||||||
|
|
|
@ -47,6 +47,7 @@ scheme_in_main_thread
|
||||||
scheme_cancel_sleep
|
scheme_cancel_sleep
|
||||||
scheme_start_sleeper_thread
|
scheme_start_sleeper_thread
|
||||||
scheme_end_sleeper_thread
|
scheme_end_sleeper_thread
|
||||||
|
scheme_notify_sleep_progress
|
||||||
scheme_make_thread_cell
|
scheme_make_thread_cell
|
||||||
scheme_thread_cell_get
|
scheme_thread_cell_get
|
||||||
scheme_thread_cell_set
|
scheme_thread_cell_set
|
||||||
|
|
|
@ -49,6 +49,7 @@ EXPORTS
|
||||||
scheme_cancel_sleep
|
scheme_cancel_sleep
|
||||||
scheme_start_sleeper_thread
|
scheme_start_sleeper_thread
|
||||||
scheme_end_sleeper_thread
|
scheme_end_sleeper_thread
|
||||||
|
scheme_notify_sleep_progress
|
||||||
scheme_make_thread_cell
|
scheme_make_thread_cell
|
||||||
scheme_thread_cell_get
|
scheme_thread_cell_get
|
||||||
scheme_thread_cell_set
|
scheme_thread_cell_set
|
||||||
|
|
|
@ -49,6 +49,7 @@ EXPORTS
|
||||||
scheme_cancel_sleep
|
scheme_cancel_sleep
|
||||||
scheme_start_sleeper_thread
|
scheme_start_sleeper_thread
|
||||||
scheme_end_sleeper_thread
|
scheme_end_sleeper_thread
|
||||||
|
scheme_notify_sleep_progress
|
||||||
scheme_make_thread_cell
|
scheme_make_thread_cell
|
||||||
scheme_thread_cell_get
|
scheme_thread_cell_get
|
||||||
scheme_thread_cell_set
|
scheme_thread_cell_set
|
||||||
|
|
|
@ -8061,14 +8061,14 @@ static void clean_up_wait(long result, OS_SEMAPHORE_TYPE *array,
|
||||||
static int made_progress;
|
static int made_progress;
|
||||||
static DWORD max_sleep_time;
|
static DWORD max_sleep_time;
|
||||||
|
|
||||||
void scheme_notify_sleep_progres()
|
void scheme_notify_sleep_progress()
|
||||||
{
|
{
|
||||||
made_progress = 1;
|
made_progress = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#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_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_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_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 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);
|
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_cancel_sleep)(void);
|
||||||
void (*scheme_start_sleeper_thread)(void (*mzsleep)(float seconds, void *fds), float secs, void *fds, int hit_fd);
|
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_end_sleeper_thread)();
|
||||||
|
void (*scheme_notify_sleep_progress)();
|
||||||
Scheme_Object *(*scheme_make_thread_cell)(Scheme_Object *def_val, int inherited);
|
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);
|
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);
|
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_cancel_sleep = scheme_cancel_sleep;
|
||||||
scheme_extension_table->scheme_start_sleeper_thread = scheme_start_sleeper_thread;
|
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_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_make_thread_cell = scheme_make_thread_cell;
|
||||||
scheme_extension_table->scheme_thread_cell_get = scheme_thread_cell_get;
|
scheme_extension_table->scheme_thread_cell_get = scheme_thread_cell_get;
|
||||||
scheme_extension_table->scheme_thread_cell_set = scheme_thread_cell_set;
|
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_cancel_sleep (scheme_extension_table->scheme_cancel_sleep)
|
||||||
#define scheme_start_sleeper_thread (scheme_extension_table->scheme_start_sleeper_thread)
|
#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_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_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_get (scheme_extension_table->scheme_thread_cell_get)
|
||||||
#define scheme_thread_cell_set (scheme_extension_table->scheme_thread_cell_set)
|
#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_unload(long *s, void *p);
|
||||||
extern void scheme_gmp_tls_snapshot(long *s, long *save);
|
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_gmp_tls_restore_snapshot(long *s, void *data, long *save, int do_free);
|
||||||
extern void scheme_notify_sleep_progres();
|
|
||||||
|
|
||||||
static void check_ready_break();
|
static void check_ready_break();
|
||||||
|
|
||||||
|
@ -3493,7 +3492,7 @@ static int check_sleep(int need_activity, int sleep_now)
|
||||||
p2 = scheme_first_thread;
|
p2 = scheme_first_thread;
|
||||||
while (p2) {
|
while (p2) {
|
||||||
if (p2->ran_some) {
|
if (p2->ran_some) {
|
||||||
scheme_notify_sleep_progres();
|
scheme_notify_sleep_progress();
|
||||||
p2->ran_some = 0;
|
p2->ran_some = 0;
|
||||||
}
|
}
|
||||||
p2 = p2->next;
|
p2 = p2->next;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user