diff options
Diffstat (limited to 'base/gdevsclass.c')
-rw-r--r-- | base/gdevsclass.c | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/base/gdevsclass.c b/base/gdevsclass.c index b9cc089ac..f5430e292 100644 --- a/base/gdevsclass.c +++ b/base/gdevsclass.c @@ -502,21 +502,23 @@ int default_subclass_create_compositor(gx_device *dev, gx_device **pcdev, const */ gx_device_forward *fdev = (gx_device_forward *)*pcdev; - if (gs_is_pdf14trans_compositor(pcte) != 0 && strncmp(fdev->dname, "pdf14clist", 10) == 0) { - pdf14_clist_device *p14dev; + if(fdev->target == dev->child) { + if (gs_is_pdf14trans_compositor(pcte) != 0 && strncmp(fdev->dname, "pdf14clist", 10) == 0) { + pdf14_clist_device *p14dev; - p14dev = (pdf14_clist_device *)*pcdev; + p14dev = (pdf14_clist_device *)*pcdev; - dev->color_info = dev->child->color_info; + dev->color_info = dev->child->color_info; - psubclass_data->saved_compositor_method = p14dev->procs.create_compositor; - psubclass_data->forwarding_dev = fdev; - p14dev->procs.create_compositor = gx_subclass_create_compositor; - } + psubclass_data->saved_compositor_method = p14dev->procs.create_compositor; + psubclass_data->forwarding_dev = fdev; + p14dev->procs.create_compositor = gx_subclass_create_compositor; + } - fdev->target = dev; - rc_decrement_only(dev->child, "subclass compositor code"); - rc_increment(dev); + fdev->target = dev; + rc_decrement_only(dev->child, "subclass compositor code"); + rc_increment(dev); + } /* Return 1 so that *pcdev becomes the current device. */ return 1; } |