summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Liddell <chris.liddell@artifex.com>2018-09-11 10:59:24 +0100
committerChris Liddell <chris.liddell@artifex.com>2018-09-11 11:39:38 +0100
commit4b3fbf2bca24b2833322985be390fc739d237f7d (patch)
tree3439b1479afe27fda4675ecd8295f9cf7f230b4b
parent5ac63e47077e0e7d02e99e247e0c47c4737e0cb8 (diff)
downloadghostpdl-4b3fbf2bca24b2833322985be390fc739d237f7d.tar.gz
Bug 699757: disable epo device for x11 devices
The epo device interferes with the operation of the x11 devices when those are integrating with an existing X application (i.e. xv, or other application that relies on the 'GHOSTVIEW' functionality). Disable epo by adding an x11 specific fillpage method.
-rw-r--r--devices/gdevx.c41
1 files changed, 40 insertions, 1 deletions
diff --git a/devices/gdevx.c b/devices/gdevx.c
index be0291592..da20177ee 100644
--- a/devices/gdevx.c
+++ b/devices/gdevx.c
@@ -75,6 +75,7 @@ static dev_proc_strip_tile_rectangle(x_strip_tile_rectangle);
static dev_proc_begin_typed_image(x_begin_typed_image);
static dev_proc_get_bits_rectangle(x_get_bits_rectangle);
/*extern dev_proc_get_xfont_procs(gdev_x_finish_copydevice);*/
+static dev_proc_fillpage(x_fillpage);
/* The device descriptor */
#define x_device(this_device, dev_body) \
@@ -124,7 +125,36 @@ const gx_device_X this_device = { \
NULL, /* create_compositor */ \
NULL, /* get_hardware_params */ \
NULL, /* text_begin */ \
- gdev_x_finish_copydevice \
+ gdev_x_finish_copydevice, \
+ NULL, /* begin_transparency_group */ \
+ NULL, /* end_transparency_group */ \
+ NULL, /* begin_transparency_mask */ \
+ NULL, /* end_transparency_mask */ \
+ NULL, /* discard_transparency_layer */ \
+ NULL, /* get_color_mapping_procs */ \
+ NULL, /* get_color_comp_index */ \
+ NULL, /* encode_color */ \
+ NULL, /* decode_color */ \
+ NULL, /* pattern_manage */ \
+ NULL, /* fill_rectangle_hl_color */ \
+ NULL, /* include_color_space */ \
+ NULL, /* fill_linear_color_scanline */ \
+ NULL, /* fill_linear_color_trapezoid */ \
+ NULL, /* fill_linear_color_triangle */ \
+ NULL, /* update_spot_equivalent_colors */ \
+ NULL, /* ret_devn_params */ \
+ x_fillpage, /* fillpage */ \
+ NULL, /* push_transparency_state */ \
+ NULL, /* pop_transparency_state */ \
+ NULL, /* put_image */ \
+ NULL, /* dev_spec_op */ \
+ NULL, /* copy_planes */ \
+ NULL, /* get_profile */ \
+ NULL, /* set_graphics_type_tag */ \
+ NULL, \
+ NULL, \
+ NULL, \
+ NULL \
}, \
gx_device_bbox_common_initial(0 /*false*/, 1 /*true*/, 1 /*true*/), \
0 /*false*/, /* is_buffered */ \
@@ -979,6 +1009,15 @@ x_get_bits_rectangle(gx_device * dev, const gs_int_rect * prect,
return code;
}
+/* Supplying a fillpage prevents the erasepage optimisation
+ device being installed.
+ */
+static int
+x_fillpage(gx_device *dev, gs_gstate * pgs, gx_device_color *pdevc)
+{
+ return gx_default_fillpage(dev, pgs, pdevc);
+}
+
/* Set up with a specified tile. */
/* Return false if we can't do it for some reason. */
static int