On 2009-12-04, at 11:54 AM, Alexandre Bergel wrote:

> Thanks John!
> 
> I did a "RomeDemo drawCar"
> Here is the log:
> 
> 
> tryLoading /Users/alexandrebergel/Desktop/T/Smalltalk/Squeak 
> 4.2.1beta1U.app/Contents/Resources/RomePlugin.bundle/Contents/MacOS/RomePlugin
> ioFindExternalFunctionIn(getModuleName, 2339392)
> ioFindExternalFunctionIn(setInterpreter, 2339392)
> ioFindExternalFunctionIn(initialiseModule, 2339392)
> ioFindExternalFunctionIn(primitivePluginVersion, 2339392)
> ioFindExternalFunctionIn(primitiveCreateFormHandle, 2339392)
> tryLoading /Users/alexandrebergel/Desktop/T/Smalltalk/Squeak 
> 4.2.1beta1U.app/Contents/Resources/SurfacePlugin.bundle/Contents/MacOS/SurfacePlugin
> tryLoading /Users/alexandrebergel/Desktop/T/Smalltalk/Squeak 
> 4.2.1beta1U.app/Contents/Resources/SurfacePlugin
> tryLoading 
> /Users/alexandrebergel/Desktop/T/Smalltalk/Plugins/SurfacePlugin.bundle/Contents/MacOS/SurfacePlugin
> tryLoading /Users/alexandrebergel/Desktop/T/Smalltalk/Plugins/SurfacePlugin
> ioFindExternalFunctionIn(primitiveOpen, 2339392)
> Squeak-Rome: canvas oop invalid!

It does load the plugin, so it's not a problem finding it, loading it and 
calling primitivePluginVersion which 
checks the rome version then primitiveCreateFormHandle to create a form handle, 
then fails in primitiveOpen

EXPORT(sqInt) primitiveOpen(void) {
        sqInt handleOop;
        sqInt contextIndex;
        sqInt canvasOop;

        canvasOop = interpreterProxy->stackValue(0);
        if (interpreterProxy->failed()) {
                return null;
        }
        contextIndex = createContextFor(canvasOop);
        if (!(interpreterProxy->failed())) {
                handleOop = interpreterProxy->integerObjectOf(contextIndex);
                
interpreterProxy->storePointerofObjectwithValue(CanvasHandleIndex, canvasOop, 
handleOop);
        }
        if (interpreterProxy->failed()) {
                return null;
        }
        return null;
}


static sqInt createContextFor(sqInt canvasOop) {
        cairo_surface_t* targetSurface;
        sqInt contextIndex;
        sqInt targetOop;
        cairo_t* context;
        sqInt i;
        sqInt targetID;

        if ((interpreterProxy->slotSizeOf(canvasOop)) < CanvasInstSize) {
                fail("canvas oop invalid");
                return null;
        }

where

#define CanvasInstSize 13

You should check to see what primitiveOpen gets passed 


--
===========================================================================
John M. McIntosh <[email protected]>   Twitter:  squeaker68882
Corporate Smalltalk Consulting Ltd.  http://www.smalltalkconsulting.com
===========================================================================





_______________________________________________
Pharo-project mailing list
[email protected]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

Reply via email to