summary refs log tree commit diff
path: root/pkgs/misc
diff options
context:
space:
mode:
authorCillian de Roiste <cillian.deroiste@gmail.com>2011-02-16 23:34:19 +0000
committerCillian de Roiste <cillian.deroiste@gmail.com>2011-02-16 23:34:19 +0000
commite80dc8eb7f0e91d3c38005b84d3c262eec30c4d7 (patch)
treed923a6d9be9acbdbd36d00cce1f43e2a6655e396 /pkgs/misc
parentad5adaca9e86cfff61a4b883d2c27a9abe0dd1fb (diff)
downloadnixlib-e80dc8eb7f0e91d3c38005b84d3c262eec30c4d7.tar
nixlib-e80dc8eb7f0e91d3c38005b84d3c262eec30c4d7.tar.gz
nixlib-e80dc8eb7f0e91d3c38005b84d3c262eec30c4d7.tar.bz2
nixlib-e80dc8eb7f0e91d3c38005b84d3c262eec30c4d7.tar.lz
nixlib-e80dc8eb7f0e91d3c38005b84d3c262eec30c4d7.tar.xz
nixlib-e80dc8eb7f0e91d3c38005b84d3c262eec30c4d7.tar.zst
nixlib-e80dc8eb7f0e91d3c38005b84d3c262eec30c4d7.zip
Applying a patch for pstoraster, without this the cups test page was printing solid black, as described in the bug report: http://bugs.ghostscript.com/show_bug.cgi?id=691108 The patch was kindly taken from https://bugs.archlinux.org/task/18339
svn path=/nixpkgs/trunk/; revision=26003
Diffstat (limited to 'pkgs/misc')
-rw-r--r--pkgs/misc/ghostscript/default.nix2
-rw-r--r--pkgs/misc/ghostscript/pstoraster.patch81
2 files changed, 82 insertions, 1 deletions
diff --git a/pkgs/misc/ghostscript/default.nix b/pkgs/misc/ghostscript/default.nix
index e1201fd08b85..053b7a0acfc2 100644
--- a/pkgs/misc/ghostscript/default.nix
+++ b/pkgs/misc/ghostscript/default.nix
@@ -37,7 +37,7 @@ stdenv.mkDerivation rec {
 
   CFLAGS = "-fPIC";
 
-  patches = [ ./purity.patch ./urw-font-files.patch ];
+  patches = [ ./purity.patch ./urw-font-files.patch ./pstoraster.patch];
 
   doCheck = true;
 
diff --git a/pkgs/misc/ghostscript/pstoraster.patch b/pkgs/misc/ghostscript/pstoraster.patch
new file mode 100644
index 000000000000..465c91e4f19e
--- /dev/null
+++ b/pkgs/misc/ghostscript/pstoraster.patch
@@ -0,0 +1,81 @@
+Upstream issue: http://bugs.ghostscript.com/show_bug.cgi?id=691108
+e.g. printing a test page prints only black
+
+Patch: https://bugs.archlinux.org/task/18339
+
+--- a/cups/gdevcups.c
++++ b/cups/gdevcups.c
+@@ -975,7 +975,8 @@ cups_map_cmyk(gx_device *pdev,		/* I - Device info */
+ 	      frac      k,		/* I - Black value */
+ 	      frac      *out)		/* O - Device colors */
+ {
+-  int	c0, c1, c2, c3;			/* Temporary color values */
++  int	c0 = 0, c1 = 0,
++        c2 = 0, c3 = 0;			/* Temporary color values */
+   float	rr, rg, rb,			/* Real RGB colors */
+ 	ciex, ciey, ciez,		/* CIE XYZ colors */
+ 	ciey_yn,			/* Normalized luminance */
+@@ -2703,9 +2704,13 @@ cups_put_params(gx_device     *pdev,	/* I - Device info */
+   int			color_set;	/* Were the color attrs set? */
+   gdev_prn_space_params	sp;		/* Space parameter data */
+   int			width,		/* New width of page */
+-                        height;		/* New height of page */
++                        height,		/* New height of page */
++                        colorspace,     /* New color space */
++                        bitspercolor;   /* New bits per color */
+   static int            width_old = 0,  /* Previous width */
+-                        height_old = 0; /* Previous height */
++                        height_old = 0, /* Previous height */
++                        colorspace_old = 0,/* Previous color space */
++                        bitspercolor_old = 0;/* Previous bits per color */
+   ppd_attr_t            *backside = NULL,
+                         *backsiderequiresflippedmargins = NULL;
+   float                 swap;
+@@ -2800,9 +2805,10 @@ cups_put_params(gx_device     *pdev,	/* I - Device info */
+   else if (code == 0) \
+   { \
+     dprintf1("DEBUG: Setting %s to", sname); \
+-    for (i = 0; i < count; i ++) \
+-      dprintf1(" %d", (unsigned)(arrayval.data[i]));	 \
+-      cups->header.name[i] = (unsigned)arrayval.data[i]; \
++    for (i = 0; i < count; i ++) { \
++      dprintf1(" %d", (unsigned)(arrayval.data[i])); \
++      cups->header.name[i] = (unsigned)(arrayval.data[i]); \
++    } \
+     dprintf("...\n"); \
+   }
+ 
+@@ -3243,23 +3249,31 @@ cups_put_params(gx_device     *pdev,	/* I - Device info */
+     }
+ #endif /* CUPS_RASTER_SYNCv1 */
+ 
++    colorspace = cups->header.cupsColorSpace;
++    bitspercolor = cups->header.cupsBitsPerColor;
++
+    /*
+     * Don't reallocate memory unless the device has been opened...
+     * Also reallocate only if the size has actually changed...
+     */
+ 
+-    if (pdev->is_open && (width != width_old || height != height_old))
++    if (pdev->is_open &&
++	(width != width_old || height != height_old ||
++	 colorspace != colorspace_old || bitspercolor != bitspercolor_old))
+     {
+ 
+       width_old = width;
+       height_old = height;
++      colorspace_old = colorspace;
++      bitspercolor_old = bitspercolor;
+ 
+      /*
+       * Device is open and size has changed, so reallocate...
+       */
+ 
+-      dprintf4("DEBUG2: Reallocating memory, [%.0f %.0f] = %dx%d pixels...\n",
+-	       pdev->MediaSize[0], pdev->MediaSize[1], width, height);
++      dprintf6("DEBUG2: Reallocating memory, [%.0f %.0f] = %dx%d pixels, color space: %d, bits per color: %d...\n",
++	       pdev->MediaSize[0], pdev->MediaSize[1], width, height,
++	       colorspace, bitspercolor);
+ 
+       sp = ((gx_device_printer *)pdev)->space_params;
\ No newline at end of file