Sophie

Sophie

distrib > Mageia > 6 > x86_64 > by-pkgid > 09236aad26217818763c178cc3a83744 > files > 14

ghostscript-9.24-1.5.mga6.src.rpm

From ba8eda9d8c62e34ce3fed2d22647797e29494eb7 Mon Sep 17 00:00:00 2001
From: Chris Liddell <chris.liddell@artifex.com>
Date: Tue, 11 Sep 2018 10:59:24 +0100
Subject: [PATCH] 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.
---
 devices/gdevx.c | 41 ++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 40 insertions(+), 1 deletion(-)

diff --git a/devices/gdevx.c b/devices/gdevx.c
index be02915..da20177 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
-- 
2.9.1