all devices regression report - 2017-11-16-01:42:52 - c9951359bde5c4e72a20624788a47a97872db090
| Newsgroups | gmane.comp.printing.ghostscript.regression |
|---|---|
| Message-ID | <20171116094253.649D220401AD@i7> |
Differences in all devices errors using gs/examples files Previous Revision: e2565e030eb37a25459671cfa9119715f3a0aae4 Current Revision: c9951359bde5c4e72a20624788a47a97872db090 commit c9951359bde5c4e72a20624788a47a97872db090 Author: Ken Sharp <[email protected]> AuthorDate: Sun Nov 12 11:10:49 2017 +0000 CommitDate: Thu Nov 16 08:26:44 2017 +0000 Repair the device API - device methods should never be NULL The original intention of the device API was that device methods (with the odd exception of fill_rectangle) must not be NULL. That appears to have been broken with the introduction of the transparency compositor, with the result that the code now: 1) has to check for methods being NULL sometimes, because that causes crashes. 2) Uses a device method being NULL to determine code paths. We want to return the device method design, because having to check for NULL methods before calling is wasteful. In this commit: define default methods for all the methods that previously did not have one. Modify gx_device_fill_in_procs to include those defaults in the device methods which it checks for NULL and replaces. Finding all the places where the code path differs if a device method is NULL, alter to check against the default method instead. Remove NULL checks where they are no longer required. Device whose 'procs' get copied directly (clist) must have defaults for all methods. Fix gx_copy_device_procs so that we only special case (don't replace the method) for those few methods where it matters that the subclassing device must have the default method if the subclassed device does. Long term we should change the code not to rely on this! Remove a couple of macros that were not required or plain dumb. base/gdevdflt.c base/gdevmem.c base/gdevnfwd.c base/gdevp14.c base/gdevprn.c base/gdevsclass.c base/gdevvec.c base/gscspace.c base/gsdevice.c base/gsdparam.c base/gsicc_manage.c base/gsovrc.c base/gspaint.c base/gstrans.c base/gxblend1.c base/gxclist.c base/gxclrect.c base/gxdevice.h base/gxfapi.c base/gxiscale.c base/gxp1fill.c new errors: errors that went away: errors that are not whitelisted: === ghostpdl/examples/transparency_example.ps === cp50 === === ghostpdl/examples/transparency_example.ps === psdrgb ===