[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