|
@@ -109,7 +109,7 @@ class RtMidiError : public std::exception
|
|
|
Note that class behaviour is undefined after a critical error (not
|
|
|
a warning) is reported.
|
|
|
*/
|
|
|
-typedef void (*RtMidiErrorCallback)( RtMidiError::Type type, const std::string &errorText );
|
|
|
+typedef void (*RtMidiErrorCallback)( RtMidiError::Type type, const std::string &errorText, void *userData );
|
|
|
|
|
|
class MidiApi;
|
|
|
|
|
@@ -161,7 +161,7 @@ class RtMidi
|
|
|
The callback function will be called whenever an error has occured. It is best
|
|
|
to set the error callback function before opening a port.
|
|
|
*/
|
|
|
- virtual void setErrorCallback( RtMidiErrorCallback errorCallback = NULL ) = 0;
|
|
|
+ virtual void setErrorCallback( RtMidiErrorCallback errorCallback = NULL, void *userData = 0 ) = 0;
|
|
|
|
|
|
protected:
|
|
|
|
|
@@ -322,7 +322,7 @@ class RtMidiIn : public RtMidi
|
|
|
The callback function will be called whenever an error has occured. It is best
|
|
|
to set the error callback function before opening a port.
|
|
|
*/
|
|
|
- virtual void setErrorCallback( RtMidiErrorCallback errorCallback = NULL );
|
|
|
+ virtual void setErrorCallback( RtMidiErrorCallback errorCallback = NULL, void *userData = 0 );
|
|
|
|
|
|
protected:
|
|
|
void openMidiApi( RtMidi::Api api, const std::string clientName, unsigned int queueSizeLimit );
|
|
@@ -413,7 +413,7 @@ class RtMidiOut : public RtMidi
|
|
|
The callback function will be called whenever an error has occured. It is best
|
|
|
to set the error callback function before opening a port.
|
|
|
*/
|
|
|
- virtual void setErrorCallback( RtMidiErrorCallback errorCallback = NULL );
|
|
|
+ virtual void setErrorCallback( RtMidiErrorCallback errorCallback = NULL, void *userData = 0 );
|
|
|
|
|
|
protected:
|
|
|
void openMidiApi( RtMidi::Api api, const std::string clientName );
|
|
@@ -448,7 +448,7 @@ class MidiApi
|
|
|
virtual std::string getPortName( unsigned int portNumber ) = 0;
|
|
|
|
|
|
inline bool isPortOpen() const { return connected_; }
|
|
|
- void setErrorCallback( RtMidiErrorCallback errorCallback );
|
|
|
+ void setErrorCallback( RtMidiErrorCallback errorCallback, void *userData );
|
|
|
|
|
|
//! A basic error reporting function for RtMidi classes.
|
|
|
void error( RtMidiError::Type type, std::string errorString );
|
|
@@ -460,6 +460,7 @@ protected:
|
|
|
bool connected_;
|
|
|
std::string errorString_;
|
|
|
RtMidiErrorCallback errorCallback_;
|
|
|
+ void *errorCallbackUserData_;
|
|
|
};
|
|
|
|
|
|
class MidiInApi : public MidiApi
|
|
@@ -547,7 +548,7 @@ inline unsigned int RtMidiIn :: getPortCount( void ) { return rtapi_->getPortCou
|
|
|
inline std::string RtMidiIn :: getPortName( unsigned int portNumber ) { return rtapi_->getPortName( portNumber ); }
|
|
|
inline void RtMidiIn :: ignoreTypes( bool midiSysex, bool midiTime, bool midiSense ) { ((MidiInApi *)rtapi_)->ignoreTypes( midiSysex, midiTime, midiSense ); }
|
|
|
inline double RtMidiIn :: getMessage( std::vector<unsigned char> *message ) { return ((MidiInApi *)rtapi_)->getMessage( message ); }
|
|
|
-inline void RtMidiIn :: setErrorCallback( RtMidiErrorCallback errorCallback ) { rtapi_->setErrorCallback(errorCallback); }
|
|
|
+inline void RtMidiIn :: setErrorCallback( RtMidiErrorCallback errorCallback, void *userData ) { rtapi_->setErrorCallback(errorCallback, userData); }
|
|
|
|
|
|
inline RtMidi::Api RtMidiOut :: getCurrentApi( void ) throw() { return rtapi_->getCurrentApi(); }
|
|
|
inline void RtMidiOut :: openPort( unsigned int portNumber, const std::string portName ) { rtapi_->openPort( portNumber, portName ); }
|
|
@@ -557,7 +558,7 @@ inline bool RtMidiOut :: isPortOpen() const { return rtapi_->isPortOpen(); }
|
|
|
inline unsigned int RtMidiOut :: getPortCount( void ) { return rtapi_->getPortCount(); }
|
|
|
inline std::string RtMidiOut :: getPortName( unsigned int portNumber ) { return rtapi_->getPortName( portNumber ); }
|
|
|
inline void RtMidiOut :: sendMessage( std::vector<unsigned char> *message ) { ((MidiOutApi *)rtapi_)->sendMessage( message ); }
|
|
|
-inline void RtMidiOut :: setErrorCallback( RtMidiErrorCallback errorCallback ) { rtapi_->setErrorCallback(errorCallback); }
|
|
|
+inline void RtMidiOut :: setErrorCallback( RtMidiErrorCallback errorCallback, void *userData ) { rtapi_->setErrorCallback(errorCallback, userData); }
|
|
|
|
|
|
// **************************************************************** //
|
|
|
//
|