diff --git a/src/conio/x_events.c b/src/conio/x_events.c index 674a5d243f139ea7307784d1fcdce5ae9f790c07..63a12edb932bec8f91d2d21267cf0d15931c12f6 100644 --- a/src/conio/x_events.c +++ b/src/conio/x_events.c @@ -653,6 +653,8 @@ static void resize_pictures(void) { #ifdef WITH_XRENDER + int iw, ih; + if (xrender_found) { if (xrender_pf == NULL) xrender_pf = x11.XRenderFindStandardFormat(dpy, PictStandardRGB24); @@ -673,14 +675,14 @@ resize_pictures(void) xrender_src_pict = x11.XRenderCreatePicture(dpy, xrender_pm, xrender_pf, 0, &pa); xrender_dst_pict = x11.XRenderCreatePicture(dpy, win, xrender_pf, 0, &pa); x11.XRenderSetPictureFilter(dpy, xrender_src_pict, "best", NULL, 0); - pthread_mutex_lock(&vstatlock); + bitmap_get_scaled_win_size(vstat.scaling, &iw, &ih, 0, 0); + pthread_mutex_unlock(&vstatlock); XTransform transform_matrix = {{ - {XDoubleToFixed((double)vstat.scrnwidth / vstat.winwidth), XDoubleToFixed(0), XDoubleToFixed(0)}, - {XDoubleToFixed(0), XDoubleToFixed((double)vstat.scrnheight / vstat.winheight), XDoubleToFixed(0)}, + {XDoubleToFixed((double)vstat.scrnwidth / iw), XDoubleToFixed(0), XDoubleToFixed(0)}, + {XDoubleToFixed(0), XDoubleToFixed((double)vstat.scrnheight / ih), XDoubleToFixed(0)}, {XDoubleToFixed(0), XDoubleToFixed(0), XDoubleToFixed(1.0)} }}; - pthread_mutex_unlock(&vstatlock); x11.XRenderSetPictureTransform(dpy, xrender_src_pict, &transform_matrix); } #endif @@ -1354,7 +1356,7 @@ local_draw_rect(struct rectlist *rect) #ifdef WITH_XRENDER x11.XPutImage(dpy, xrender_pm, gc, xim, 0, 0, 0, 0, dw, dh); x11.XRenderComposite(dpy, PictOpSrc, xrender_src_pict, 0, xrender_dst_pict, - 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, xoff, yoff, cleft, ctop); #else fprintf(stderr, "External scaling enabled without XRender support compiled in!\n");