[MPlayer-cvslog] CVS: main/libvo sub.c,1.77,1.78

Jindrich Makovicka CVS syncmail at mplayerhq.hu
Sun Apr 10 13:54:34 CEST 2005


CVS change done by Jindrich Makovicka CVS

Update of /cvsroot/mplayer/main/libvo
In directory mail:/var2/tmp/cvs-serv9323

Modified Files:
	sub.c 
Log Message:
defer loading of the font after display size change to avoid useless
reloading - hack, but needed because for most of the vo's the panscan
information and screen size are updated asynchronously



Index: sub.c
===================================================================
RCS file: /cvsroot/mplayer/main/libvo/sub.c,v
retrieving revision 1.77
retrieving revision 1.78
diff -u -r1.77 -r1.78
--- sub.c	9 Apr 2005 22:25:33 -0000	1.77
+++ sub.c	10 Apr 2005 11:54:31 -0000	1.78
@@ -758,18 +758,40 @@
     vo_osd_list=NULL;
 }
 
+#define FONT_LOAD_DEFER 6
+
 int vo_update_osd(int dxs,int dys){
     mp_osd_obj_t* obj=vo_osd_list;
     int chg=0;
+#ifdef HAVE_FREETYPE    
+    static int defer_counter = 0, prev_dxs = 0, prev_dys = 0;
+#endif
 
 #ifdef HAVE_FREETYPE    
     // here is the right place to get screen dimensions
-    if (!vo_font
-	|| force_load_font
-	|| ((dxs != vo_image_width || dys != vo_image_height)
-	   && (subtitle_autoscale == 2 || subtitle_autoscale == 3))) {
+    if (((dxs != vo_image_width)
+	   && (subtitle_autoscale == 2 || subtitle_autoscale == 3))
+	|| ((dys != vo_image_height)
+	    && (subtitle_autoscale == 1 || subtitle_autoscale == 3)))
+    {
+	// screen dimensions changed
+	// wait a while to avoid useless reloading of the font
+	if (dxs == prev_dxs || dys == prev_dys) {
+	    defer_counter++;
+	} else {
+	    prev_dxs = dxs;
+	    prev_dys = dys;
+	    defer_counter = 0;
+	}
+	if (defer_counter >= FONT_LOAD_DEFER) force_load_font = 1;
+    }
+
+    if (!vo_font || force_load_font) {
 	force_load_font = 0;
 	load_font_ft(dxs, dys);
+	prev_dxs = dxs;
+	prev_dys = dys;
+	defer_counter = 0;
     }
 #endif
 




More information about the MPlayer-cvslog mailing list