2003/11/03 07:36:40
[org.ibex.core.git] / src / org / xwt / Font.java
index b1d9230..75bd9c8 100644 (file)
@@ -4,6 +4,7 @@ import org.xwt.translators.*;
 import org.xwt.util.*;
 import org.xwt.js.*;
 import java.util.*;
+import java.io.*;
 
 public class Font {
 
@@ -46,7 +47,6 @@ public class Font {
             if (g == null) glyphsToBeRendered.prepend(g = new Glyph(c));
             if (g.p == null) {
                 glyphsToBeRendered.prepend(g);
-                Scheduler.add(glyphRenderingTask);
                 encounteredUnrenderedGlyph = true;
             } else if (!encounteredUnrenderedGlyph) {
                 if (pb != null && g.p != null)
@@ -67,6 +67,7 @@ public class Font {
         }});
     
         if (!used) for(int i=32; i<128; i++) glyphsToBeRendered.append(glyphs[i] = new Glyph((char)i));
+        if (!used || encounteredUnrenderedGlyph) { System.out.println("foo!"); Scheduler.add(glyphRenderingTask); }
         used = true;
         return ((long)width << 16) | (long)height;
     }
@@ -85,9 +86,14 @@ public class Font {
     static final Queue glyphsToBeRendered = new Queue(255);
     static final Scheduler.Task glyphRenderingTask = new Scheduler.Task() { public void perform() {
         Glyph g = (Glyph)glyphsToBeRendered.remove(false);
-        if (g == null || g.p != null) return;
+        if (g == null) return;
+        if (g.p != null) { perform(); return; }
         Log.log(Glyph.class, "rendering glyph " + g.c);
-        freetype.renderGlyph(g);
+        try {
+            freetype.renderGlyph(g);
+        } catch (IOException e) {
+            Log.log(Freetype.class, e);
+        }
         Scheduler.add(this);
     } };
 }