Hi Rick, I don't think there is any documentation on universal Netscape plug- ins, but there probably should be. The only tricky part is that on Intel, you need to always pass raw function pointers (as opposed to tvectors) between the browser and the plug-in. Many plug-ins include "helper functions" to do the function pointer/tvector translation. These functions could be modified like so to work on Intel: static FunctionPointer functionPointerForTVector(TransitionVector tvp) { #ifdef __ppc__ const uint32 temp[6] = {0x3D800000, 0x618C0000, 0x800C0000, 0x804C0004, 0x7C0903A6, 0x4E800420}; uint32 *newGlue = NULL; if (tvp != NULL) { newGlue = (uint32 *)malloc(sizeof(temp)); if (newGlue != NULL) { unsigned i; for (i = 0; i < 6; i++) newGlue[i] = temp[i]; newGlue[0] |= ((UInt32)tvp >> 16); newGlue[1] |= ((UInt32)tvp & 0xFFFF); MakeDataExecutable(newGlue, sizeof(temp)); } } return (FunctionPointer)newGlue; #else // Just use the function pointer on other architectures return (FunctionPointer)tvp; #endif /* __ppc__ */ } static TransitionVector tVectorForFunctionPointer(FunctionPointer fp) { #ifdef __ppc__ FunctionPointer *newGlue = NULL; if (fp != NULL) { newGlue = (FunctionPointer *)malloc(2 * sizeof (FunctionPointer)); if (newGlue != NULL) { newGlue[0] = fp; newGlue[1] = NULL; } } return (TransitionVector)newGlue; #else // Just use the function pointer on other architectures return (TransitionVector)fp; #endif /* __ppc__ */ } Hope that helps! Thanks, -t On Sep 19, 2006, at 12:52 PM, Rick Mann wrote:
Can someone point me at a resource(s) describing how I would port an older, but carbonized, plugin to a universal plugin that works in Safari? Thanks!
-- Rick
_______________________________________________ webkit-dev mailing list webkit-dev@opendarwin.org http://www.opendarwin.org/mailman/listinfo/webkit-dev