diff options
author | Ray Johnston <ray.johnston@artifex.com> | 2013-01-27 14:03:05 -0800 |
---|---|---|
committer | Chris Liddell <chris.liddell@artifex.com> | 2013-01-30 14:07:32 +0000 |
commit | ab9615d43302f03ce57fdd8e849ec52e870983e4 (patch) | |
tree | 641b2d84e5159d079d82518385a57cc27939fe7a | |
parent | 62df74b7ef081a9f35028b493843a4624048f7af (diff) | |
download | ghostpdl-ab9615d43302f03ce57fdd8e849ec52e870983e4.tar.gz |
Bug 693590: MT rendering has wrong 'supports_devn' and incomplete color_info
Shadings use the comp_bits, comp_mask and comp_shift which must match
the main thread's setting, so we copy the color_info from the clist
device.
Also the thread's icc_struct->supports_devn must correspond to the main
thread's device (regressions with psdcmyk detected this).
-rw-r--r-- | gs/base/gxclthrd.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/gs/base/gxclthrd.c b/gs/base/gxclthrd.c index 47c0aa1e8..c3880f1da 100644 --- a/gs/base/gxclthrd.c +++ b/gs/base/gxclthrd.c @@ -147,6 +147,7 @@ clist_setup_render_threads(gx_device *dev, int y) ncdev->bandlist_memory = thread->memory; gs_c_param_list_read(¶mlist); ndev->PageCount = dev->PageCount; /* copy to prevent mismatch error */ + ndev->color_info = cdev->color_info; /* copy before putdeviceparams */ #if CMM_THREAD_SAFE ndev->icc_struct = dev->icc_struct; /* Set before put params */ rc_increment(ndev->icc_struct); @@ -160,6 +161,8 @@ clist_setup_render_threads(gx_device *dev, int y) code = devn_copy_params(dev, (gx_device*) ncdev); if (code < 0) return_error(gs_error_VMerror); } + /* Also make sure supports_devn is set correctly */ + ndev->icc_struct->supports_devn = cdev->icc_struct->supports_devn; ncdev->page_uses_transparency = cdev->page_uses_transparency; if_debug3m(gs_debug_flag_icc, cdev->memory, "[icc] MT clist device = 0x%x profile = 0x%x handle = 0x%x\n", |