Asbjoern Pettersen writes:
> The OS/2 and UNIX code is doing the same !
> The structure PLUG_IN_INFO is a REAL input and should be a parameter
> input to gimp_main(). ex: gimp_main(argc,argv, &PLUG_IN_INFO);
>
> On UNIX they trust/use fork() to input the structure, but my OS/2
> version will work on all system with or without forking.
Sorry, I don't follow you here, I don't see any forking going on. To
my understanding, PLUG_IN_INFO is (on Unix) a (data) entry point
(i.e. a externally visible variable) in the plug-in executable, and
the libgimp shared library references it. The problem with
PLUG_IN_INFO on OS/2 apparently is that it's hard on OS/2 to refer to
exported variables in the executable that has loaded a shared library
from the library.
Although on Win32 you could look up the PLUG_IN_INFO address in the
plug-in executable from the DLL (as long as it is marked for export),
I do it almost like OS/2: I pass the address of PLUG_IN_INFO to a
function in libgimp, that stores it in a place easily accessible to
libgimp. (On OS/2, you store a copy of PLUG_IN_INFO in libgimp, while
on Win32 I only store a pointer.)
I agree with you, the "pass PLUG_IN_INFO address as parameter from the
plug-in to gimp_main in libgimp" approach could well be used for all
platforms, it would clean up the ifdefs in gimp.c and gimp.h quite a
bit.
--tml