Hi all, I use Xcode to find samples of codes and try to make it work on FPC/Lazarus. One example opens an AUGraph and send MIDI messages - a small sample. It calls AUGraphNewNode which returns a node from 1 to n, and it works perfectly in FPC on Carbon/i386, and of course for Xcode on the same machine.
The same code works fine in Xcode on Carbon/PowerPC, but does not return any nodes in FPC on Carbon/PowerPC. I've just started on working with PowerPC, so I thought I'm obviously is missing out something vital, perhaps with the record definition used by AUGraphNewNode. I've learned about SetExceptionMask and floating points today when using PowerPC, so maybe I need to handle the records differently also? I know about little and big endian, but this shouldn't be necessary? Or perhaps I should define the external call differently on PowerPC? I've include code snips below, and any hints will be much appreciated. TIA, and best regards, Normann // -------- Code snips // Pascal type ComponentDescription = record componentType: OSType; componentSubType: OSType; componentManufacturer: OSType; componentFlags: UInt32; componentFlagMask: UInt32; end; function AUGraphNewNode(inGraph: AUGraph; const inDescription: ComponentDescription; inClassDataSize: LongWord; inClassData : Pointer; var outNode : AUNode): OSStatus; external name '_AUGraphNewNode'; mwpascal; // AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER; var _Graph: AUGraph; _CD: ComponentDescription; _Node: AUNode; begin NewAUGraph(_Graph); _CD.componentType := kAudioUnitComponentType; _CD.componentSubType := kAudioUnitSubType_MusicDevice; _CD.componentManufacturer := kAudioUnitID_DLSSynth; _CD.componentFlags := 0; _CD.componentFlagsMask := 0; AUGraphNewNode(_Graph, _CD, 0, nil, _Node); // Node returns zero, but no OSError // C++ struct ComponentDescription { OSType componentType; /* A unique 4-byte code indentifying the command set */ OSType componentSubType; /* Particular flavor of this instance */ OSType componentManufacturer; /* Vendor indentification */ unsigned long componentFlags; /* 8 each for Component,Type,SubType,Manuf/revision */ unsigned long componentFlagsMask; /* Mask for specifying which flags to consider in search, zero during registration */ }; extern OSStatus AUGraphNewNode(AUGraph inGraph, const ComponentDescription *inDescription, UInt32 inClassDataSize, const void *inClassData, AUNode *outNode) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER; { AUGraph _Graph; ComponentDescription _CD; AUNode _Node; NewAUGraph(@_Graph); _CD.componentType = kAudioUnitComponentType; _CD.componentSubType = kAudioUnitSubType_MusicDevice; _CD.componentManufacturer = kAudioUnitID_DLSSynth; _CD.componentFlags = 0; _CD.componentFlagsMask = 0; AUGraphNewNode(_Graph, &_CD, 0, NULL, &_Node); /* Node returns 1 } _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal