summaryrefslogtreecommitdiff
path: root/base/gdevsclass.c
diff options
context:
space:
mode:
Diffstat (limited to 'base/gdevsclass.c')
-rw-r--r--base/gdevsclass.c24
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;
}