mirror of https://github.com/mpv-player/mpv
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.
This commit is contained in:
parent
51120c9c7f
commit
859ddc9906
|
@ -491,12 +491,13 @@ static void draw_image(struct vo *vo, mp_image_t *mpi)
|
||||||
struct priv *p = vo->priv;
|
struct priv *p = vo->priv;
|
||||||
|
|
||||||
if (p->active) {
|
if (p->active) {
|
||||||
|
struct mp_image src = *mpi;
|
||||||
struct mp_rect src_rc = p->src;
|
struct mp_rect src_rc = p->src;
|
||||||
src_rc.x0 = MP_ALIGN_DOWN(src_rc.x0, mpi->fmt.align_x);
|
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);
|
src_rc.y0 = MP_ALIGN_DOWN(src_rc.y0, mpi->fmt.align_y);
|
||||||
mp_image_crop_rc(mpi, src_rc);
|
mp_image_crop_rc(&src, src_rc);
|
||||||
mp_sws_scale(p->sws, p->cur_frame, mpi);
|
mp_sws_scale(p->sws, p->cur_frame, &src);
|
||||||
osd_draw_on_image(vo->osd, p->osd, mpi ? mpi->pts : 0, 0, p->cur_frame);
|
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];
|
struct modeset_buf *front_buf = &p->dev->bufs[p->dev->front_buf];
|
||||||
int32_t shift = (p->device_w * p->y + p->x) * 4;
|
int32_t shift = (p->device_w * p->y + p->x) * 4;
|
||||||
|
|
Loading…
Reference in New Issue