changeset 11125:d9478c8e5ffe

fix aspect hack now geometry sets geometry_wh_changed when either width or height is changed. aspect is still preserved in fullscreen
author attila
date Wed, 15 Oct 2003 15:17:09 +0000
parents b5bffec1a657
children b2999f8a67ce
files libvo/aspect.c libvo/geometry.c libvo/geometry.h
diffstat 3 files changed, 19 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/libvo/aspect.c	Wed Oct 15 12:12:17 2003 +0000
+++ b/libvo/aspect.c	Wed Oct 15 15:17:09 2003 +0000
@@ -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);
--- a/libvo/geometry.c	Wed Oct 15 12:12:17 2003 +0000
+++ b/libvo/geometry.c	Wed Oct 15 15:17:09 2003 +0000
@@ -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( 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(xpos) *xpos = xoff;
-		if(ypos) *ypos = yoff;
-		if(widw) *widw = width;
-		if(widh) *widh = height;
+		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;
 }
--- a/libvo/geometry.h	Wed Oct 15 12:12:17 2003 +0000
+++ b/libvo/geometry.h	Wed Oct 15 15:17:09 2003 +0000
@@ -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 */