X-Git-Url: http://git.asbjorn.biz/?p=swftools.git;a=blobdiff_plain;f=lib%2Fdevices%2Frecord.c;h=abace9b8e1cc947131fbdc67d9aea7f7287be778;hp=ae493ee9ee52ab369067f2369907e0ec1708810c;hb=8589e0d1f5e47c05458033e750fd6182ca704fbe;hpb=944d0b42a196bd412c12c6c06fd0e4f301d4a1c7 diff --git a/lib/devices/record.c b/lib/devices/record.c index ae493ee..abace9b 100644 --- a/lib/devices/record.c +++ b/lib/devices/record.c @@ -460,6 +460,7 @@ static void replay(struct _gfxdevice*dev, gfxdevice_t*out, reader_t*r) } case OP_ENDPAGE: { msg(" replay: ENDPAGE"); + out->endpage(out); break; } case OP_FINISH: { @@ -584,7 +585,7 @@ void gfxresult_record_replay(gfxresult_t*result, gfxdevice_t*device) internal_result_t*i = (internal_result_t*)result->internal; reader_t r; - if(i->filename) { + if(i->use_tempfile) { reader_init_filereader2(&r, i->filename); } else { reader_init_memreader(&r, i->data, i->length); @@ -633,6 +634,7 @@ static void record_result_destroy(gfxresult_t*r) free(i->data);i->data = 0; } if(i->filename) { + unlink(i->filename); free(i->filename); } free(r->internal);r->internal = 0; @@ -668,7 +670,7 @@ void gfxdevice_record_flush(gfxdevice_t*dev, gfxdevice_t*out) { internal_t*i = (internal_t*)dev->internal; if(out) { - if(i->use_tempfile) { + if(!i->use_tempfile) { int len=0; void*data = writer_growmemwrite_memptr(&i->w, &len); reader_t r; @@ -676,7 +678,8 @@ void gfxdevice_record_flush(gfxdevice_t*dev, gfxdevice_t*out) replay(dev, out, &r); writer_growmemwrite_reset(&i->w); } else { - msg(" Flushing not supported for file based record device"); + msg(" Flushing not supported for file based record device"); + exit(1); } } } @@ -698,10 +701,10 @@ static gfxresult_t* record_finish(struct _gfxdevice*dev) ir->use_tempfile = i->use_tempfile; if(i->use_tempfile) { + ir->filename = i->filename; + } else { ir->data = writer_growmemwrite_getmem(&i->w); ir->length = i->w.pos; - } else { - ir->filename = i->filename; } i->w.finish(&i->w); @@ -730,7 +733,7 @@ void gfxdevice_record_init(gfxdevice_t*dev, char use_tempfile) writer_init_growingmemwriter(&i->w, 1048576); } else { char buffer[128]; - i->filename = strdup(mktempname(buffer)); + i->filename = strdup(mktempname(buffer, "gfx")); writer_init_filewriter2(&i->w, i->filename); } i->fontlist = gfxfontlist_create();