summaryrefslogtreecommitdiff
path: root/libguile/async.c
diff options
context:
space:
mode:
authorMarius Vollmer <mvo@zagadka.de>2004-01-04 23:36:49 +0000
committerMarius Vollmer <mvo@zagadka.de>2004-01-04 23:36:49 +0000
commitb57a0953fe589a52a5460526e1eda42b8a10e6a1 (patch)
treea63fdba73fefabe854e5d52a3196115c317cd70a /libguile/async.c
parente0499207154aa2ceff06e7679cd94afc25b3001e (diff)
downloadguile-b57a0953fe589a52a5460526e1eda42b8a10e6a1.tar.gz
(scm_with_blocked_asyncs, scm_with_unblocked_asyncs): New.
Diffstat (limited to 'libguile/async.c')
-rw-r--r--libguile/async.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/libguile/async.c b/libguile/async.c
index 2edfa8329..ff4c9fc5a 100644
--- a/libguile/async.c
+++ b/libguile/async.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995,1996,1997,1998,2000,2001, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1995,1996,1997,1998,2000,2001, 2002, 2004 Free Software Foundation, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -364,6 +364,24 @@ scm_c_call_with_unblocked_asyncs (void *(*proc) (void *data), void *data)
data, NULL);
}
+void
+scm_with_blocked_asyncs ()
+{
+ scm_on_rewind (increase_block, NULL, SCM_F_WIND_EXPLICITELY);
+ scm_on_unwind (decrease_block, NULL, SCM_F_WIND_EXPLICITELY);
+}
+
+void
+scm_with_unblocked_asyncs ()
+{
+ if (scm_root->block_asyncs == 0)
+ scm_misc_error ("scm_with_unblocked_asyncs",
+ "asyncs already unblocked", SCM_EOL);
+ scm_on_rewind (decrease_block, NULL, SCM_F_WIND_EXPLICITELY);
+ scm_on_unwind (increase_block, NULL, SCM_F_WIND_EXPLICITELY);
+}
+
+
void