vo_drm: don't mutate the current frame when clamping for panscan
When running with --panscan=1, this could crash - because the current
frame was reduced in size each time the image was redrawn, which would
result in a failed assertion the second time it's drawn.
(cherry picked from commit 859ddc9906)
This commit is contained in:
1 parent
5f81da0b88
commit
b2f44f131f
1 file changed
+4
-3
+4
-3
@@ -491,12 +491,13 @@ static void draw_image(struct vo *vo, mp_image_t *mpi)
|
||||
struct priv *p = vo->priv;
|
||||
|
||||
if (p->active) {
|
||||
struct mp_image src = *mpi;
|
||||
struct mp_rect src_rc = p->src;
|
||||
src_rc.x0 = MP_ALIGN_DOWN(src_rc.x0, mpi->fmt.align_x);
|
||||
src_rc.y0 = MP_ALIGN_DOWN(src_rc.y0, mpi->fmt.align_y);
|
||||
mp_image_crop_rc(mpi, src_rc);
|
||||
mp_sws_scale(p->sws, p->cur_frame, mpi);
|
||||
osd_draw_on_image(vo->osd, p->osd, mpi ? mpi->pts : 0, 0, p->cur_frame);
|
||||
mp_image_crop_rc(&src, src_rc);
|
||||
mp_sws_scale(p->sws, p->cur_frame, &src);
|
||||
osd_draw_on_image(vo->osd, p->osd, src.pts, 0, p->cur_frame);
|
||||
|
||||
struct modeset_buf *front_buf = &p->dev->bufs[p->dev->front_buf];
|
||||
int32_t shift = (p->device_w * p->y + p->x) * 4;
|
||||
|
||||
Reference in new issue
Block a user