From dc859873a6507f2da466f104011d21f703ed90a3 Mon Sep 17 00:00:00 2001 From: "Kevin.xie" Date: Tue, 2 Aug 2022 10:04:50 +0800 Subject: [PATCH] v4l2test: Fix the freezing frame from the first running on dmabuf mode Signed-off-by: Kevin.xie --- package/starfive/v4l2_test/v4l2_test.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/package/starfive/v4l2_test/v4l2_test.c b/package/starfive/v4l2_test/v4l2_test.c index 239d62d0..b92b81b9 100644 --- a/package/starfive/v4l2_test/v4l2_test.c +++ b/package/starfive/v4l2_test/v4l2_test.c @@ -540,7 +540,7 @@ static void page_flip_handler(int fd, unsigned int frame, /* If we have a next buffer, then let's return the current one, * and grab the next one. */ - if (g_drm_buf_next_idx > 0) { + if (g_drm_buf_next_idx >= 0) { stf_v4l2_queue_buffer(&gp_cfg_param->v4l2_param, g_drm_buf_curr_idx); g_drm_buf_curr_idx = g_drm_buf_next_idx; g_drm_buf_next_idx = -1; @@ -673,15 +673,17 @@ static void mainloop() drmModePageFlip(gp_cfg_param->drm_param.fd, dev->crtc_id, dev->bufs[buf.index].fb_id, DRM_MODE_PAGE_FLIP_EVENT, dev); + g_drm_buf_curr_idx = buf.index; first_frame = 0; + } else { + g_drm_buf_next_idx = buf.index; } - g_drm_buf_next_idx = buf.index; frameRead(); // TODO: add support for save file later calc_frame_fps(); } } if (fds[1].revents & POLLIN) { - if (g_drm_buf_next_idx > 0) { + if (g_drm_buf_next_idx >= 0) { drmHandleEvent(gp_cfg_param->drm_param.fd, &ev); } }