Cool – glad it’s working. It seems things don’t suffer too much from your locking the surface for buffer access, which is good to see.
You could consider passing in SyphonServerOptionIsPrivate when you create servers as your servers aren’t particularly useful other than to you (generally upside down, require the fake video device to be active). You’d then have to pass the serverDescription dictionary between processes – you presumably already have a communication channel you could send that through.
Anyway, good to hear Syphon helped!