summaryrefslogtreecommitdiffstats
path: root/video/out/drm_common.c
diff options
context:
space:
mode:
Diffstat (limited to 'video/out/drm_common.c')
-rw-r--r--video/out/drm_common.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/video/out/drm_common.c b/video/out/drm_common.c
index dd53793dbb..f8d68dfa81 100644
--- a/video/out/drm_common.c
+++ b/video/out/drm_common.c
@@ -42,6 +42,7 @@
#include "common/msg.h"
#include "options/m_config.h"
#include "osdep/io.h"
+#include "osdep/poll_wrapper.h"
#include "osdep/timer.h"
#include "misc/ctype.h"
#include "video/out/vo.h"
@@ -283,12 +284,12 @@ static void vt_switcher_destroy(struct vt_switcher *s)
close(vt_switcher_pipe[1]);
}
-static void vt_switcher_poll(struct vt_switcher *s, int timeout_ms)
+static void vt_switcher_poll(struct vt_switcher *s, int timeout_ns)
{
struct pollfd fds[1] = {
{ .events = POLLIN, .fd = vt_switcher_pipe[0] },
};
- poll(fds, 1, timeout_ms);
+ mp_poll(fds, 1, timeout_ns);
if (!fds[0].revents)
return;
@@ -1309,8 +1310,8 @@ void vo_drm_wait_events(struct vo *vo, int64_t until_time_ns)
struct vo_drm_state *drm = vo->drm;
if (drm->vt_switcher_active) {
int64_t wait_ns = until_time_ns - mp_time_ns();
- int timeout_ms = MPCLAMP(wait_ns / 1e6, 1, 10000);
- vt_switcher_poll(&drm->vt_switcher, timeout_ms);
+ int64_t timeout_ns = MPCLAMP(wait_ns, 1e6, 1e10);
+ vt_switcher_poll(&drm->vt_switcher, timeout_ns);
} else {
vo_wait_default(vo, until_time_ns);
}