diff --git a/src/module/module_sdl2.c b/src/module/module_sdl2.c
index bce1e3b6477a10186a90fa27d08bbe84a9bcdb8c..8421533b22ad4f8bf115a43e60954c9fcb304c33 100644
--- a/src/module/module_sdl2.c
+++ b/src/module/module_sdl2.c
@@ -277,6 +277,7 @@ module_sdl2_close(struct lkt_win *const win)
 {
     RETURN_UNLESS(win && win->window, "Invalid arguments", NOTHING);
     struct module_sdl2_window *sdl2 = win->window;
+    sdl2->mpv_time_pos = (sdl2->mpv_duration = 0);
     RETURN_UNLESS(sdl2->mpv, "Missing mpv ctx", NOTHING);
     static const char *cmd[] = { "stop", NULL };
     mpv_command_async((mpv_handle *) sdl2->mpv, 0, cmd);
diff --git a/src/module/module_x11.c b/src/module/module_x11.c
index 5852a9c4cf6cd70f0cf56bc65eb59be70694b8b1..521acfdad421a92e82e09050ac7d0403b2ed8757 100644
--- a/src/module/module_x11.c
+++ b/src/module/module_x11.c
@@ -200,7 +200,7 @@ module_x11_close(struct lkt_win *const win)
     struct module_x11_window *const x11_win = win->window;
     lmpv_free(&x11_win->mpv);
     x11_win->child_display = NULL;
-    x11_win->child_win = 0;
+    x11_win->child_win = (x11_win->mpv_time_pos = (x11_win->mpv_duration = 0));
 }
 
 void
diff --git a/src/module/mpv.c b/src/module/mpv.c
index 492ac110f59a2a7f779bf8bcba5fd7225447707e..8d7f4354dadfe9501ea1e632887581bf38f810d9 100644
--- a/src/module/mpv.c
+++ b/src/module/mpv.c
@@ -151,6 +151,8 @@ loop:
         break;
 
     case MPV_EVENT_SHUTDOWN:
+        *time_pos = 0;
+        *time_duration = 0;
         database_queue_stop(db);
         win->close(win);
         return 1;