i don't really use libpd (and i am too lazy to read the code now - it's almost 40°C here...), so I thought I'd ask here:

can I just build externals that are usable by both ordinary Pd-vanilla and a (lib)Pd that has been compiled for multi-instance (PDINSTANCE) and/or multi-threading (PDTHREADS)?

and vice-versa: when I build an external with PDINSTANCE/PDTHREADS, can I use it in ordinary (single-instance, single-threaded) Pd?

my first tests (building a pseudo-Pd (based on libpd) that has both PDINSTANCE & PDTHREADS enabled), shows that this shouldn't actually pose a problem (i tried running the few test-suites I have (zexy & iemmatrix), and that went fine. i didn't actually test with two instances (threaded or not), which would expose a whole new set of problems :-)

the two things to take care of that I know of are:
- using data that is static (or otherwise shared between threads) obviously needs special handling. - the convenience static variables exported by Pd ("s_float" and friends) should be replaced with explicitly generated symbols (gensym(...))

the latter is only needed, when trying to run a non-PDINSTANCE external in a PDINSTANCE host (or vice-versa).

anything else I am missing?


i am thinking of distributing externals that are build with both PDINSTANCE & PDTHREADS, in order to make the usable for not-just-Pd-vanilla.

gfasmdr
IOhannes


--
please do not CC me for list-emails

Attachment: OpenPGP_signature.asc
Description: OpenPGP digital signature

 ---
[email protected] - the Pd developers' mailinglist
https://lists.iem.at/hyperkitty/list/[email protected]/message/524G7R7WI5QKPS3TQEGY3YMM5K3N64RU/

Reply via email to