diff options
Diffstat (limited to 'amiga')
-rw-r--r-- | amiga/print.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/amiga/print.c b/amiga/print.c index 9f18a76d8..fe399be77 100644 --- a/amiga/print.c +++ b/amiga/print.c @@ -58,6 +58,7 @@ bool ami_print_next_page(void); void ami_print_end(void); bool ami_print_dump(void); void ami_print_progress(void); +void ami_print_close_device(void); const struct printer amiprinter = { &amiplot, @@ -397,7 +398,12 @@ void ami_print(struct hlcache_handle *c, int copies) ami_print_info.ps->page_height = ami_print_info.PED->ped_MaxYDots; ami_print_info.ps->scale = scale; - print_set_up(c, &amiprinter, ami_print_info.ps, &height); + if(!print_set_up(c, &amiprinter, ami_print_info.ps, &height)) + { + warn_user("PrintError","print_set_up() returned false"); + ami_print_close_device(); + return; + } height *= ami_print_info.ps->scale; ami_print_info.pages = height / ami_print_info.ps->page_height; @@ -482,6 +488,11 @@ void ami_print_end(void) DisposeObject(ami_print_info.objects[OID_MAIN]); glob = &browserglob; + ami_print_close_device(); +} + +void ami_print_close_device(void) +{ CloseDevice(ami_print_info.PReq); FreeSysObject(ASOT_IOREQUEST,ami_print_info.PReq); } |