vlc | branch: master | Rémi Denis-Courmont <[email protected]> | Wed Jun 12 19:34:50 2019 +0300| [f2d8f922bb2ccfe991a45492abd7c13c67d9dbec] | committer: Rémi Denis-Courmont
vout: set crop window synchronously This fixes an ABBA race if two threads set crop settings simultaneously. > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=f2d8f922bb2ccfe991a45492abd7c13c67d9dbec --- src/video_output/control.h | 1 - src/video_output/video_output.c | 19 +++++-------------- 2 files changed, 5 insertions(+), 15 deletions(-) diff --git a/src/video_output/control.h b/src/video_output/control.h index 5eaf766bbb..b733e8ce2b 100644 --- a/src/video_output/control.h +++ b/src/video_output/control.h @@ -34,7 +34,6 @@ enum { VOUT_CONTROL_DISPLAY_SIZE, /* window */ VOUT_CONTROL_CROP_BORDER, /* border */ - VOUT_CONTROL_CROP_WINDOW, /* window */ VOUT_CONTROL_VIEWPOINT, /* viewpoint */ }; diff --git a/src/video_output/video_output.c b/src/video_output/video_output.c index ad0b975aa7..17556b854f 100644 --- a/src/video_output/video_output.c +++ b/src/video_output/video_output.c @@ -524,7 +524,6 @@ void vout_ChangeCropWindow(vout_thread_t *vout, { vout_thread_sys_t *sys = vout->p; assert(!sys->dummy); - vout_control_cmd_t cmd; if (x < 0) x = 0; @@ -543,14 +542,13 @@ void vout_ChangeCropWindow(vout_thread_t *vout, sys->source.crop.window.height = height; vout_UpdateWindowSizeLocked(vout); + + vlc_mutex_lock(&sys->display_lock); vlc_mutex_unlock(&sys->window_lock); - vout_control_cmd_Init(&cmd, VOUT_CONTROL_CROP_WINDOW); - cmd.window.x = x; - cmd.window.y = y; - cmd.window.width = width; - cmd.window.height = height; - vout_control_Push(&vout->p->control, &cmd); + if (sys->display != NULL) + vout_SetDisplayCrop(vout->p->display, 0, 0, x, y, width, height); + vlc_mutex_unlock(&vout->p->display_lock); } void vout_ChangeCropBorder(vout_thread_t *vout, @@ -1585,13 +1583,6 @@ static void ThreadControl(vout_thread_t *vout, vout_control_cmd_t cmd) cmd.window.width, cmd.window.height); vlc_mutex_unlock(&vout->p->display_lock); break; - case VOUT_CONTROL_CROP_WINDOW: - vlc_mutex_lock(&vout->p->display_lock); - vout_SetDisplayCrop(vout->p->display, 0, 0, - cmd.window.x, cmd.window.y, - cmd.window.width, cmd.window.height); - vlc_mutex_unlock(&vout->p->display_lock); - break; case VOUT_CONTROL_CROP_BORDER: vlc_mutex_lock(&vout->p->display_lock); vout_SetDisplayCrop(vout->p->display, 0, 0, _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
