diff options
author | Uoti Urpala <uau@mplayer2.org> | 2011-07-06 08:24:20 +0300 |
---|---|---|
committer | Uoti Urpala <uau@mplayer2.org> | 2011-07-06 08:36:46 +0300 |
commit | aeafa7a2b46e8ee84c9fe277d9cc6f14666a0465 (patch) | |
tree | 7f1561a1d0ed83b004e80b8144aac4921e2e8498 /libvo/x11_common.c | |
parent | 9298acdd605c49eeec6e8b6dc4b2a33b2aab40b5 (diff) | |
download | mpv-aeafa7a2b46e8ee84c9fe277d9cc6f14666a0465.tar.bz2 mpv-aeafa7a2b46e8ee84c9fe277d9cc6f14666a0465.tar.xz |
vo_xv: avoid clearing too much on resize
vo_xv set the "use_fs" parameter to vo_x11_clearwindow_part(). This
meant it always used the whole screen size to calculate the area to
clear. I can't see why overriding the vo->dwidth/dheight values would
ever be the right thing to do (if in fullscreen they should be set to
match that), so remove the use_fs parameter and always use the
dwidth/dheight values in the function. Also delete code drawing back
borders in vo_xv_draw colorkey. That should already happen in
vo_x11_clearwindow_part(); if it doesn't then things need to be fixed
anyway because colorkey code only ran in fullscreen mode (but borders
must work in window mode too).
Diffstat (limited to 'libvo/x11_common.c')
-rw-r--r-- | libvo/x11_common.c | 32 |
1 files changed, 3 insertions, 29 deletions
diff --git a/libvo/x11_common.c b/libvo/x11_common.c index 12fc661dee..b9e1c03745 100644 --- a/libvo/x11_common.c +++ b/libvo/x11_common.c @@ -1129,18 +1129,17 @@ final: } void vo_x11_clearwindow_part(struct vo *vo, Window vo_window, - int img_width, int img_height, int use_fs) + int img_width, int img_height) { struct vo_x11_state *x11 = vo->x11; - struct MPOpts *opts = vo->opts; Display *mDisplay = vo->x11->display; int u_dheight, u_dwidth, left_ov, left_ov2; if (x11->f_gc == None) return; - u_dheight = use_fs ? opts->vo_screenheight : vo->dheight; - u_dwidth = use_fs ? opts->vo_screenwidth : vo->dwidth; + u_dheight = vo->dheight; + u_dwidth = vo->dwidth; if ((u_dheight <= img_height) && (u_dwidth <= img_width)) return; @@ -2302,7 +2301,6 @@ int vo_xv_init_colorkey(struct vo *vo) void vo_xv_draw_colorkey(struct vo *vo, int32_t x, int32_t y, int32_t w, int32_t h) { - struct MPOpts *opts = vo->opts; struct vo_x11_state *x11 = vo->x11; if( x11->xv_ck_info.method == CK_METHOD_MANUALFILL || x11->xv_ck_info.method == CK_METHOD_BACKGROUND )//less tearing than XClearWindow() @@ -2312,30 +2310,6 @@ void vo_xv_draw_colorkey(struct vo *vo, int32_t x, int32_t y, x, y, w, h ); } - - /* draw black bars if needed */ - /* TODO! move this to vo_x11_clearwindow_part() */ - if ( vo_fs ) - { - XSetForeground(x11->display, x11->vo_gc, 0 ); - /* making non-overlap fills, requires 8 checks instead of 4 */ - if ( y > 0 ) - XFillRectangle(x11->display, x11->window, x11->vo_gc, - 0, 0, - opts->vo_screenwidth, y); - if (x > 0) - XFillRectangle(x11->display, x11->window, x11->vo_gc, - 0, 0, - x, opts->vo_screenheight); - if (x + w < opts->vo_screenwidth) - XFillRectangle(x11->display, x11->window, x11->vo_gc, - x + w, 0, - opts->vo_screenwidth, opts->vo_screenheight); - if (y + h < opts->vo_screenheight) - XFillRectangle(x11->display, x11->window, x11->vo_gc, - 0, y + h, - opts->vo_screenwidth, opts->vo_screenheight); - } } /** \brief Tests if a valid argument for the ck suboption was given. */ |