Rev 246 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
221 | daniel-mar | 1 | Incompatibilities with GIMP / PSPI |
2 | ---------------------------------- |
||
167 | dmarschall | 3 | |
4 | 1. Filter cannot be loaded by PSPI, because of a memory error. |
||
5 | |||
6 | Status: FIXED (Bug in FF) in FilterFoundry 1.7 |
||
7 | |||
8 | FilterFoundry 1.6 used wrong length values for the TLV (Type, Length, Value) members |
||
178 | dmarschall | 9 | of the PIPL structure (in RC files, and in fixpipl()). |
167 | dmarschall | 10 | The length value must include everything, including paddings of strings. |
11 | |||
169 | dmarschall | 12 | Adobe writes in SPPiPL.h: |
13 | "Number of characters in the data array. Rounded to a multiple of 4." |
||
14 | |||
15 | On the other hand, the 1997 PICA documentation (page 23) and |
||
16 | 1996 "Cross-Application Plug-in Development Resource Guide" describes: |
||
17 | "Contains the length of the propertyData field. It does not include any padding bytes after |
||
18 | propertyData to achieve four byte alignment. This field may be zero." |
||
19 | |||
20 | I think this is not correct, since even official plugins of Adobe (e.g. "3D Transform.8bf") |
||
21 | are rounding the length to a multiple of 4 (actually, rounding to the next possible multiple 4, |
||
192 | daniel-mar | 22 | so that padding is always guaranteed). |
169 | dmarschall | 23 | |
167 | dmarschall | 24 | 2. Filters will only fill the bottom of the picture, not the whole canvas. |
25 | |||
26 | Status: FIXED (Workaround) in FilterFoundry 1.7 |
||
27 | |||
28 | The reason is that OnContinue/main.c:RequestNext() processes the image in chunks, |
||
29 | and probably due to a bug, PSPI only applies the image data of the last chunk. |
||
30 | |||
182 | dmarschall | 31 | Workaround applied in FF 1.7: If the host signature is "GIMP" (PMIG), then we set |
167 | dmarschall | 32 | needall=1 to disable chunked processing. |
33 | |||
34 | 3. When you re-open the main window, the formulas of the previous session vanish. |
||
35 | |||
36 | Status: FIXED (Workaround) in FilterFoundry 1.7 |
||
37 | |||
246 | daniel-mar | 38 | The reason is a bug in PSPI: The host should preserve the value of pb->parameters, which PSPI doesn't do. |
39 | Also, all global variables are unloaded, so the plugin cannot preserve any data. |
||
167 | dmarschall | 40 | |
247 | daniel-mar | 41 | Workaround in FF 1.7: If the host GIMP is detected, the new function "host_preserves_parameters" returns "true". |
42 | This mode saves the filter data into a temporary AFS file and loads it |
||
167 | dmarschall | 43 | when the window is opened again. |
44 | |||
246 | daniel-mar | 45 | Exactly the same problem applies to the IfanView 8BF host. |
46 | |||
167 | dmarschall | 47 | 4. Saving does not work |
48 | |||
49 | Status: FIXED (Workaround) in FilterFoundry 1.7 |
||
50 | |||
51 | Filters could not be saved as AFS files because PSPI can't handle zero-sized handles |
||
52 | (PINEWHANDLE), so FF 1.7 is now assigning 1 byte for these. |
||
169 | dmarschall | 53 | |
192 | daniel-mar | 54 | 5. For a 1920x1080 picture, the fitzoom in GIMP/PSPI is not correct. It is 8% on GIMP but should be 7%. |
169 | dmarschall | 55 | |
56 | Status: FIXED (Workaround) in FilterFoundry 1.7 |
||
57 | |||
58 | The reason is that FilterFoundry adjusts the zoom level if the available memory is low. |
||
192 | daniel-mar | 59 | PSPI sets maxSpace to 100 MB hardcoded. It is probably only a dummy value and doesn't |
174 | dmarschall | 60 | resemble the actual space GIMP can assign to the plugin. |
169 | dmarschall | 61 | In Photoshop, maxSpace is 825 MB. |
62 | |||
63 | Workaround in FF 1.7: If GIMP/PSPI is detected, the adjustment of the zoom level is disabled. |
||
246 | daniel-mar | 64 | |
247 | daniel-mar | 65 | 6. Standalone filters don't work correctly |
246 | daniel-mar | 66 | |
247 | daniel-mar | 67 | Status: FIXED (Workaround) in FilterFoundry 1.7 |
246 | daniel-mar | 68 | |
69 | PSPI does not preserve the data of the EntryPoint argument "intptr_t *data". |
||
70 | Therefore, the global data (gdata) object cannot preserved, |
||
71 | and the standalone plugin doesn't "know" that it is a standalone plugin. |
||
247 | daniel-mar | 72 | Exactly the same problem applies to the IfanView 8BF host. |
73 | => The handling in checkandinitparams() has been changed to address this issue. |
||
246 | daniel-mar | 74 | |
75 | Furthermore, the preserved "pb->parameters" are in a TEMP file which has |
||
76 | the same name for each FilterFoundry plugin. Therefore, the "pb->parameters" |
||
77 | are shared between main plugin and all standalone plugins. |
||
247 | daniel-mar | 78 | => In FilterFoundry 1.7.0.4, the file name will contain a hash of the plugin |
79 | or 0 for the main plugin. |