Skip to content

Commit 72ba2b1

Browse files
authored
fix osd flicker (#50)
1 parent ba8afe4 commit 72ba2b1

File tree

2 files changed

+5
-2
lines changed

2 files changed

+5
-2
lines changed

src/main.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -285,12 +285,12 @@ void *__DISPLAY_THREAD__(void *param)
285285
assert(!ret);
286286

287287
// show DRM FB in plane
288+
ret = pthread_mutex_lock(&osd_mutex);
289+
assert(!ret);
288290
drmModeAtomicSetCursor(output_list->video_request, 0);
289291
ret = set_drm_object_property(output_list->video_request, &output_list->video_plane, "FB_ID", fb_id);
290292
assert(ret>0);
291293

292-
ret = pthread_mutex_lock(&osd_mutex);
293-
assert(!ret);
294294
if(enable_osd) {
295295
ret = set_drm_object_property(output_list->video_request, &output_list->osd_plane, "FB_ID", output_list->osd_bufs[output_list->osd_buf_switch].fb);
296296
assert(ret>0);

src/osd.cpp

+3
Original file line numberDiff line numberDiff line change
@@ -1615,6 +1615,9 @@ void *__OSD_THREAD__(void *param) {
16151615
int ret = pthread_mutex_lock(&osd_mutex);
16161616
assert(!ret);
16171617
p->out->osd_buf_switch = buf_idx;
1618+
ret = set_drm_object_property(p->out->video_request, &p->out->osd_plane, "FB_ID", p->out->osd_bufs[p->out->osd_buf_switch].fb);
1619+
assert(ret>0);
1620+
drmModeAtomicCommit(p->fd, p->out->video_request, DRM_MODE_ATOMIC_NONBLOCK, NULL);
16181621
ret = pthread_mutex_unlock(&osd_mutex);
16191622
assert(!ret);
16201623
last_display_at = std::chrono::steady_clock::now();

0 commit comments

Comments
 (0)