Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add a method to reset the ok flag and clear the error message #322

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 21 additions & 15 deletions rtmidi_c.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,12 @@ void rtmidi_error (MidiApi *api, enum RtMidiErrorType type, const char* errorStr
api->error ((RtMidiError::Type) type, msg);
}

void rtmidi_clear_error (RtMidiPtr device)
{
device->ok = true;
device->msg = "";
}

void rtmidi_open_port (RtMidiPtr device, unsigned int portNumber, const char *portName)
{
std::string name = portName;
Expand All @@ -102,7 +108,7 @@ void rtmidi_open_port (RtMidiPtr device, unsigned int portNumber, const char *po

} catch (const RtMidiError & err) {
device->ok = false;
device->msg = err.what ();
device->msg = strdup (err.what ());
}
}

Expand All @@ -114,7 +120,7 @@ void rtmidi_open_virtual_port (RtMidiPtr device, const char *portName)

} catch (const RtMidiError & err) {
device->ok = false;
device->msg = err.what ();
device->msg = strdup (err.what ());
}

}
Expand All @@ -126,7 +132,7 @@ void rtmidi_close_port (RtMidiPtr device)

} catch (const RtMidiError & err) {
device->ok = false;
device->msg = err.what ();
device->msg = strdup (err.what ());
}
}

Expand All @@ -137,7 +143,7 @@ unsigned int rtmidi_get_port_count (RtMidiPtr device)

} catch (const RtMidiError & err) {
device->ok = false;
device->msg = err.what ();
device->msg = strdup (err.what ());
return -1;
}
}
Expand All @@ -153,7 +159,7 @@ int rtmidi_get_port_name (RtMidiPtr device, unsigned int portNumber, char * bufO
name = ((RtMidi*) device->ptr)->getPortName (portNumber);
} catch (const RtMidiError & err) {
device->ok = false;
device->msg = err.what ();
device->msg = strdup (err.what ());
return -1;
}

Expand Down Expand Up @@ -182,7 +188,7 @@ RtMidiInPtr rtmidi_in_create_default ()
wrp->ptr = 0;
wrp->data = 0;
wrp->ok = false;
wrp->msg = err.what ();
wrp->msg = strdup (err.what ());
}

return wrp;
Expand All @@ -205,7 +211,7 @@ RtMidiInPtr rtmidi_in_create (enum RtMidiApi api, const char *clientName, unsign
wrp->ptr = 0;
wrp->data = 0;
wrp->ok = false;
wrp->msg = err.what ();
wrp->msg = strdup (err.what ());
}

return wrp;
Expand All @@ -226,7 +232,7 @@ enum RtMidiApi rtmidi_in_get_current_api (RtMidiPtr device)

} catch (const RtMidiError & err) {
device->ok = false;
device->msg = err.what ();
device->msg = strdup (err.what ());

return RTMIDI_API_UNSPECIFIED;
}
Expand All @@ -246,7 +252,7 @@ void rtmidi_in_set_callback (RtMidiInPtr device, RtMidiCCallback callback, void
((RtMidiIn*) device->ptr)->setCallback (callback_proxy, device->data);
} catch (const RtMidiError & err) {
device->ok = false;
device->msg = err.what ();
device->msg = strdup (err.what ());
delete (CallbackProxyUserData*) device->data;
device->data = 0;
}
Expand All @@ -260,7 +266,7 @@ void rtmidi_in_cancel_callback (RtMidiInPtr device)
device->data = 0;
} catch (const RtMidiError & err) {
device->ok = false;
device->msg = err.what ();
device->msg = strdup (err.what ());
}
}

Expand All @@ -287,7 +293,7 @@ double rtmidi_in_get_message (RtMidiInPtr device,
}
catch (const RtMidiError & err) {
device->ok = false;
device->msg = err.what ();
device->msg = strdup (err.what ());
return -1;
}
catch (...) {
Expand All @@ -314,7 +320,7 @@ RtMidiOutPtr rtmidi_out_create_default ()
wrp->ptr = 0;
wrp->data = 0;
wrp->ok = false;
wrp->msg = err.what ();
wrp->msg = strdup (err.what ());
}

return wrp;
Expand All @@ -337,7 +343,7 @@ RtMidiOutPtr rtmidi_out_create (enum RtMidiApi api, const char *clientName)
wrp->ptr = 0;
wrp->data = 0;
wrp->ok = false;
wrp->msg = err.what ();
wrp->msg = strdup (err.what ());
}


Expand All @@ -357,7 +363,7 @@ enum RtMidiApi rtmidi_out_get_current_api (RtMidiPtr device)

} catch (const RtMidiError & err) {
device->ok = false;
device->msg = err.what ();
device->msg = strdup (err.what ());

return RTMIDI_API_UNSPECIFIED;
}
Expand All @@ -371,7 +377,7 @@ int rtmidi_out_send_message (RtMidiOutPtr device, const unsigned char *message,
}
catch (const RtMidiError & err) {
device->ok = false;
device->msg = err.what ();
device->msg = strdup (err.what ());
return -1;
}
catch (...) {
Expand Down
7 changes: 7 additions & 0 deletions rtmidi_c.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,10 @@
#define RTMIDIAPI //__declspec(dllimport)
#endif

#if defined _WIN32
#define strdup _strdup
#endif

#ifdef __cplusplus
extern "C" {
#endif
Expand Down Expand Up @@ -135,6 +139,9 @@ RTMIDIAPI enum RtMidiApi rtmidi_compiled_api_by_name(const char *name);
//! \internal Report an error.
RTMIDIAPI void rtmidi_error (enum RtMidiErrorType type, const char* errorString);

//! \brief Resets the ok flag and the error message.
RTMIDIAPI void rtmidi_clear_error (RtMidiPtr device);

/*! \brief Open a MIDI port.
*
* \param port Must be greater than 0
Expand Down