import org.xwt.util.*;
import org.xwt.js.*;
import java.util.*;
+import java.io.*;
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)
}});
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;
}
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);
} };
}