CVS: main/libvo aspect.c,1.15,1.16 geometry.c,1.10,1.11 geometry.h,1.4,1.5
Update of /cvsroot/mplayer/main/libvo In directory mail:/var/tmp.root/cvs-serv12422 Modified Files: aspect.c geometry.c geometry.h Log Message: fix aspect hack now geometry sets geometry_wh_changed when either width or height is changed. aspect is still preserved in fullscreen Index: aspect.c =================================================================== RCS file: /cvsroot/mplayer/main/libvo/aspect.c,v retrieving revision 1.15 retrieving revision 1.16 diff -u -r1.15 -r1.16 --- aspect.c 4 Oct 2003 17:29:04 -0000 1.15 +++ aspect.c 15 Oct 2003 15:17:09 -0000 1.16 @@ -1,5 +1,6 @@ /* Stuff for correct aspect scaling. */ #include "aspect.h" +#include "geometry.h" #ifndef ASPECT_TEST #include "../mp_msg.h" #endif @@ -60,12 +61,13 @@ void aspect(int *srcw, int *srch, int zoom){ int tmpw; - if(!zoom && movie_aspect == 0) { + if( !zoom && geometry_wh_changed ) { #ifdef ASPECT_DEBUG printf("aspect(0) no aspect forced!\n"); #endif return; // the user doesn't want to fix aspect } + #ifdef ASPECT_DEBUG printf("aspect(0) fitin: %dx%d zoom: %d screenaspect: %.2f\n",aspdat.scrw,aspdat.scrh, zoom,monitor_aspect); Index: geometry.c =================================================================== RCS file: /cvsroot/mplayer/main/libvo/geometry.c,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- geometry.c 31 Aug 2003 18:33:02 -0000 1.10 +++ geometry.c 15 Oct 2003 15:17:09 -0000 1.11 @@ -7,6 +7,8 @@ /* A string of the form [WxH][+X+Y] or xpos[%]:ypos[%] */ char *vo_geometry = NULL; +// set when either width or height is changed +int geometry_wh_changed = 0; #define RESET_GEOMETRY width = height = xoff = yoff = xper = yper = -1; @@ -69,15 +71,20 @@ " widh: %i, scrw: %i, scrh: %i\n",*widw, *widh, scrw, scrh); /* FIXME: better checking of bounds... */ - if(width < 0 || width > scrw) width = (scrw < *widw) ? scrw : *widw; - if(height < 0 || height > scrh) height = (scrh < *widh) ? scrh : *widh; - if(xoff < 0 || xoff + width > scrw) xoff = 0; - if(yoff < 0 || yoff + height > scrh) yoff = 0; - - if(xpos) *xpos = xoff; - if(ypos) *ypos = yoff; - if(widw) *widw = width; - if(widh) *widh = height; + if( width != -1 && (width < 0 || width > scrw)) + width = (scrw < *widw) ? scrw : *widw; + if( height != -1 && (height < 0 || height > scrh)) + height = (scrh < *widh) ? scrh : *widh; + if(xoff != -1 && (xoff < 0 || xoff + width > scrw)) xoff = 0; + if(yoff != -1 && (yoff < 0 || yoff + height > scrh)) yoff = 0; + + if(xoff != -1 && xpos) *xpos = xoff; + if(yoff != -1 && ypos) *ypos = yoff; + if(width != -1 && widw) *widw = width; + if(height != -1 && widh) *widh = height; + + if( width != -1 || height != -1) + geometry_wh_changed = 1; } return 1; } Index: geometry.h =================================================================== RCS file: /cvsroot/mplayer/main/libvo/geometry.h,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- geometry.h 2 Mar 2003 21:09:15 -0000 1.4 +++ geometry.h 15 Oct 2003 15:17:09 -0000 1.5 @@ -3,5 +3,6 @@ #define __GEOMETRY_H extern char *vo_geometry; +extern int geometry_wh_changed; int geometry(int *xpos, int *ypos, int *widw, int *widh, int scrw, int scrh); #endif /* !__GEOMETRY_H */
participants (1)
-
Attila Kinali CVS