[gs-cvs] rev 8771 - trunk/gs/src
giles at ghostscript.com
giles at ghostscript.com
Thu May 22 17:13:50 PDT 2008
Author: giles
Date: 2008-05-22 17:13:50 -0700 (Thu, 22 May 2008)
New Revision: 8771
Modified:
trunk/gs/src/gdevcairo.c
Log:
Implement sync_output as cairo_flush. Patch from Behdad Esfahbod.
Modified: trunk/gs/src/gdevcairo.c
===================================================================
--- trunk/gs/src/gdevcairo.c 2008-05-22 18:06:22 UTC (rev 8770)
+++ trunk/gs/src/gdevcairo.c 2008-05-23 00:13:50 UTC (rev 8771)
@@ -63,6 +63,7 @@
(depth > 1 ? 256 : 2), (depth > 8 ? 256 : 1))
static dev_proc_open_device(devcairo_open_device);
+static dev_proc_sync_output(devcairo_sync_output);
static dev_proc_output_page(devcairo_output_page);
static dev_proc_close_device(devcairo_close_device);
@@ -73,7 +74,7 @@
{ \
devcairo_open_device, \
NULL, /* get_initial_matrix */\
- NULL, /* sync_output */\
+ devcairo_sync_output,\
devcairo_output_page,\
devcairo_close_device,\
gx_default_rgb_map_rgb_color,\
@@ -378,6 +379,20 @@
}
}
+int
+devcairo_sync_output(gx_device * dev)
+{
+ gx_device_cairo *const devcairo = (gx_device_cairo*)dev;
+ int code = 0;
+
+ cairo_surface_flush (cairo_get_target (devcairo->cr));
+
+ code = devcairo_check_status (devcairo);
+ if (code < 0) return_error (code);
+
+ return 0;
+}
+
/* Complete a page */
static int
devcairo_output_page(gx_device *dev, int num_copies, int flush)
@@ -389,10 +404,10 @@
for (i = num_copies - 1; i > 0; i++)
cairo_copy_page (devcairo->cr);
- cairo_show_page (devcairo->cr);
-
if (flush)
- cairo_surface_flush (cairo_get_target (devcairo->cr));
+ cairo_show_page (devcairo->cr);
+ else
+ cairo_copy_page (devcairo->cr);
code = devcairo_check_status (devcairo);
if (code < 0) return_error (code);
More information about the gs-cvs
mailing list