static void record_addfont(struct _gfxdevice*dev, gfxfont_t*font)
{
internal_t*i = (internal_t*)dev->internal;
- msg("<trace> record: %08x ADDFONT %s\n", dev);
+ msg("<trace> record: %08x ADDFONT %s\n", dev, font->id);
if(font && !gfxfontlist_hasfont(i->fontlist, font)) {
writer_writeU8(&i->w, OP_ADDFONT);
dumpFont(&i->w, font);
unsigned char op = reader_readU8(r);
switch(op) {
case OP_END:
- r->dealloc(r);
-
- {
- gfxfontlist_t*l = fontlist;
- while(l) {
- l = l->next;
- }
- }
-
- gfxfontlist_free(fontlist, 1);
- return;
+ goto finish;
case OP_SETPARAM: {
msg("<trace> replay: SETPARAM");
char*key;
}
}
}
- msg("<error> No END token in gfx recording");
+finish:
+ r->dealloc(r);
+ /* problem: if we just replayed into a device which stores the
+ font for later use (the record device itself is a nice example),
+ then we can't free it yet */
+ //gfxfontlist_free(fontlist, 1);
+ gfxfontlist_free(fontlist, 0);
}
void gfxresult_record_replay(gfxresult_t*result, gfxdevice_t*device)
{