summaryrefslogtreecommitdiff
path: root/uisimulator/sdl/kernel.c
diff options
context:
space:
mode:
Diffstat (limited to 'uisimulator/sdl/kernel.c')
-rw-r--r--uisimulator/sdl/kernel.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/uisimulator/sdl/kernel.c b/uisimulator/sdl/kernel.c
index ff6c94933b..e2aa0d31c4 100644
--- a/uisimulator/sdl/kernel.c
+++ b/uisimulator/sdl/kernel.c
@@ -159,6 +159,14 @@ void queue_wait(struct event_queue *q, struct event *ev)
{
unsigned int rd;
+#ifdef HAVE_EXTENDED_MESSAGING_AND_NAME
+ if (q->send && q->send->curr_sender)
+ {
+ /* auto-reply */
+ queue_release_sender(&q->send->curr_sender, 0);
+ }
+#endif
+
if (q->read == q->write)
{
block_thread(&q->thread);
@@ -178,6 +186,14 @@ void queue_wait(struct event_queue *q, struct event *ev)
void queue_wait_w_tmo(struct event_queue *q, struct event *ev, int ticks)
{
+#ifdef HAVE_EXTENDED_MESSAGING_AND_NAME
+ if (q->send && q->send->curr_sender)
+ {
+ /* auto-reply */
+ queue_release_sender(&q->send->curr_sender, 0);
+ }
+#endif
+
if (q->read == q->write && ticks > 0)
{
block_thread_w_tmo(&q->thread, ticks);