internal MidiPort (MidiClient client, string portName, bool input) { using (var nsstr = new NSString (portName)){ GCHandle gch = GCHandle.Alloc (this); int code; if (input) code = MIDIInputPortCreate (client.handle, nsstr.Handle, Read, GCHandle.ToIntPtr (gch), out handle); else code = MIDIOutputPortCreate (client.handle, nsstr.Handle, out handle); if (code != 0){ gch.Free (); handle = MidiObject.InvalidRef; throw new MidiException ((MidiError) code); } Client = client; PortName = portName; this.input = input; } }
internal MidiEndpoint (MidiClient client, string name, out MidiError code) { using (var nsstr = new NSString (name)){ GCHandle gch = GCHandle.Alloc (this); code = MIDIDestinationCreate (client.handle, nsstr.Handle, Read, GCHandle.ToIntPtr (gch), out handle); EndpointName = name; } }