diff --git a/inc/lektor/net.h b/inc/lektor/net.h
index 981753dc1f8d6aa4ce823c268fd76fe25946e257..e9985dfc49d267bc0ff314e1f099954e08da16d8 100644
--- a/inc/lektor/net.h
+++ b/inc/lektor/net.h
@@ -86,6 +86,8 @@ struct lkt_state {
     struct lkt_win win;
 };
 
+void lkt_set_event_available(struct lkt_state *srv, enum lkt_event_type type);
+
 /* Send a message to the connected client. */
 void lkt_state_send(struct lkt_state *srv, size_t c, struct lkt_message *msg);
 
diff --git a/src/module/module_sdl2.c b/src/module/module_sdl2.c
index 50aa7e1db27c9047342383ad885edc86d29aa72e..120ce9680049c67fbfb8cbe5eb9ca60c16131cd0 100644
--- a/src/module/module_sdl2.c
+++ b/src/module/module_sdl2.c
@@ -166,8 +166,10 @@ loop:
         break;
 
     case SDL_WINDOWEVENT:
-        if (event.window.event == SDL_WINDOWEVENT_EXPOSED)
+        if (event.window.event == SDL_WINDOWEVENT_EXPOSED) {
+            lkt_set_event_available(win->srv, lkt_event_play);
             redraw = 1;
+        }
         break;
 
     case SDL_KEYUP:
diff --git a/src/net/listen.c b/src/net/listen.c
index 04c4468243375b70f78c537f1f0f307360bde628..332edcb229a82606b6354ad2e181ab00fc7037f2 100644
--- a/src/net/listen.c
+++ b/src/net/listen.c
@@ -50,6 +50,12 @@ struct lkt_client {
     int continuation;
 };
 
+void
+lkt_set_event_available(struct lkt_state *srv, enum lkt_event_type type)
+{
+    lkt_queue_make_available(&srv->queue, type);
+}
+
 static inline bool
 lkt_close_client(struct lkt_state *srv, size_t c)
 {