[MPlayer-dev-eng] [PATCH] Xinerama full screen bug fix
Georgi Chorbadzhiyski
gf at unixsol.org
Thu Jul 24 13:48:09 CEST 2008
Around 07/23/08 01:52, Georgi Chorbadzhiyski scribbled:
> The following patch fixes a problem with full screen geometry when
> mplayer is started with the X11 -xineramascreen option.
>
> Without this patch the following produces wrong results:
> 1. Start mplayer -xineramascreen 1 file
> 2. Hit 'f' to put mplayer in full screen mode (or use -fs option)
> - Everything works as expected
> 3. Hit 'f' again to stop full screen mode
> 4. Move mplayer window to another screen (with different resolution)
> 5. Hit 'f' to put mplayer into full screen mode again
> - Expected - mplayer in full screen mode
> - Result - mplayer in full screen mode but the video have
> the dimensions of the first screen, not the current
> screen
>
> The problem is in libvo/x11_common.c: update_xinerama_info(void)
> This function is used in two cases:
> 1. To position the mplayer window
> 2. To position full screen
>
> The function auto detects current screen and acts accordingly
> when no -xineramascreen option is used, but fails to detect current
> screen when -xinramascreen is used.
>
> The proposed fix is simple, allow vo_x11_fullscreen() to ignore
> xinerama_screen option and always force auto detection in case when
> full screen is requested.
>
> Signed-off-by: Georgi Chorbadzhiyski <georgi at unixsol.org>
>
> --- libvo/x11_common.c (revision 27338)
> +++ libvo/x11_common.c (working copy)
> @@ -366,8 +366,7 @@
> XA_INIT(WM_DELETE_WINDOW);
> }
>
> -void update_xinerama_info(void) {
> - int screen = xinerama_screen;
> +void get_xinerama_info(int screen) {
> xinerama_x = xinerama_y = 0;
> #ifdef HAVE_XINERAMA
> if (screen >= -1 && XineramaIsActive(mDisplay))
> @@ -403,6 +402,10 @@
> aspect_save_screenres(vo_screenwidth, vo_screenheight);
> }
>
> +void inline update_xinerama_info(void) {
> + get_xinerama_info(xinerama_screen);
> +}
> +
> int vo_init(void)
> {
> // int mScreen;
> @@ -1539,7 +1542,7 @@
> vo_old_width = vo_dwidth;
> vo_old_height = vo_dheight;
> }
> - update_xinerama_info();
> + get_xinerama_info(-1); // get current screen dimensions
> x = xinerama_x;
> y = xinerama_y;
> w = vo_screenwidth;
Guys any comment on this? Is it crap or everybody is at
the beach drinking cocktails with funny straws? ;)
--
Georgi Chorbadzhiyski
http://georgi.unixsol.org/
More information about the MPlayer-dev-eng
mailing list