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
_______________________________________________
webkit-dev mailing list
webkit-dev@opendarwin.org
http://www.opendarwin.org/mailman/listinfo/webkit-dev