summaryrefslogtreecommitdiff
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
parente0499207154aa2ceff06e7679cd94afc25b3001e (diff)
downloadguile-b57a0953fe589a52a5460526e1eda42b8a10e6a1.tar.gz
(scm_with_blocked_asyncs, scm_with_unblocked_asyncs): New.
-rw-r--r--libguile/async.c20
-rw-r--r--libguile/async.h4
2 files changed, 22 insertions, 2 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
diff --git a/libguile/async.h b/libguile/async.h
index 5e18a04e5..3174c7a48 100644
--- a/libguile/async.h
+++ b/libguile/async.h
@@ -3,7 +3,7 @@
#ifndef SCM_ASYNC_H
#define SCM_ASYNC_H
-/* 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
@@ -44,6 +44,8 @@ SCM_API SCM scm_call_with_blocked_asyncs (SCM proc);
SCM_API SCM scm_call_with_unblocked_asyncs (SCM proc);
void *scm_c_call_with_blocked_asyncs (void *(*p) (void *d), void *d);
void *scm_c_call_with_unblocked_asyncs (void *(*p) (void *d), void *d);
+void scm_with_blocked_asyncs (void);
+void scm_with_unblocked_asyncs (void);
SCM_API void scm_init_async (void);
#if (SCM_ENABLE_DEPRECATED == 1)