mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-02 04:40:29 +02:00
* __scm.h (SCM_ASYNC_CLICK): Check pending_asyncs instead of
active_asyncs. * root.h (scm_root_state): Added pending_asyncs and signal_asyncs fields. * root.c (root_mark): Mark them. (make_root): Initialize them.
This commit is contained in:
parent
2132f0d2a5
commit
1ceead47c4
3 changed files with 8 additions and 1 deletions
|
@ -408,7 +408,7 @@ typedef long SCM_STACKITEM;
|
|||
|
||||
#define SCM_ASYNC_TICK /*fixme* should change names */ \
|
||||
do { \
|
||||
if (scm_root->active_asyncs != SCM_EOL) \
|
||||
if (scm_root->pending_asyncs) \
|
||||
scm_async_click (); \
|
||||
} while (0)
|
||||
|
||||
|
|
|
@ -81,6 +81,7 @@ root_mark (SCM root)
|
|||
/* No need to gc mark def_loadp */
|
||||
scm_gc_mark (s->fluids);
|
||||
scm_gc_mark (s->active_asyncs);
|
||||
scm_gc_mark (s->signal_asyncs);
|
||||
return SCM_ROOT_STATE (root) -> parent;
|
||||
}
|
||||
|
||||
|
@ -131,7 +132,9 @@ scm_make_root (SCM parent)
|
|||
}
|
||||
|
||||
root_state->active_asyncs = SCM_EOL;
|
||||
root_state->signal_asyncs = SCM_EOL;
|
||||
root_state->block_asyncs = 0;
|
||||
root_state->pending_asyncs = 1;
|
||||
|
||||
SCM_REDEFER_INTS;
|
||||
SCM_NEWSMOB (root, scm_tc16_root, root_state);
|
||||
|
|
|
@ -109,8 +109,12 @@ typedef struct scm_root_state
|
|||
|
||||
SCM active_asyncs; /* The thunks to be run at the next
|
||||
safe point */
|
||||
SCM signal_asyncs; /* The pre-queued cells for signal handlers.
|
||||
*/
|
||||
unsigned int block_asyncs; /* Non-zero means that asyncs should
|
||||
not be run. */
|
||||
unsigned int pending_asyncs; /* Non-zero means that asyncs might be pending.
|
||||
*/
|
||||
} scm_root_state;
|
||||
|
||||
#define scm_stack_base (scm_root->stack_base)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue