diff options
| author | Elijah Shaw-Rutschman <elijahr@gmail.com> | 2020-05-10 18:32:57 -0500 |
|---|---|---|
| committer | Stephen Sinclair <radarsat1@users.noreply.github.com> | 2020-06-04 09:47:48 +0200 |
| commit | 0226876275cc78dc44e06129d5f529d1e83e308d (patch) | |
| tree | 0f78242708d61ac4fe7e944a533ff52dc794a6db /rtaudio_c.cpp | |
| parent | 1f673b617bc99f636c20c2a802c90c0afc76473c (diff) | |
Add rtaudio_error_type() method to retrieve RtAudioError::Type
`rtaudio_c.h` defines the `rtaudio_error_t` enum, however it doesn’t appear to be used anywhere; the various C functions only retrieve the error message string from `RtAudioError`.
This change set redefines the `rtaudio_t->has_error` member as `rtaudio_t->errtype`. The new member holds `rtaudio_error_t` values and is retrievable by the getter function `rtaudio_error_type()`.
These changes will allow for fine-grained error handling when using the C API.
Signed-off-by: Elijah Shaw-Rutschman <elijahr@gmail.com>
Diffstat (limited to 'rtaudio_c.cpp')
| -rw-r--r-- | rtaudio_c.cpp | 71 |
1 files changed, 38 insertions, 33 deletions
diff --git a/rtaudio_c.cpp b/rtaudio_c.cpp index ad91bab..c7a9fca 100644 --- a/rtaudio_c.cpp +++ b/rtaudio_c.cpp @@ -11,7 +11,7 @@ struct rtaudio { rtaudio_cb_t cb; void *userdata; - int has_error; + rtaudio_error_t errtype; char errmsg[MAX_ERROR_MESSAGE_LENGTH]; }; @@ -29,31 +29,35 @@ unsigned int rtaudio_get_num_compiled_apis(void) { extern "C" const char* rtaudio_api_names[][2]; const char *rtaudio_api_name(rtaudio_api_t api) { - if (api < 0 || api >= RTAUDIO_API_NUM) - return NULL; - return rtaudio_api_names[api][0]; + if (api < 0 || api >= RTAUDIO_API_NUM) + return NULL; + return rtaudio_api_names[api][0]; } const char *rtaudio_api_display_name(rtaudio_api_t api) { - if (api < 0 || api >= RTAUDIO_API_NUM) - return "Unknown"; - return rtaudio_api_names[api][1]; + if (api < 0 || api >= RTAUDIO_API_NUM) + return "Unknown"; + return rtaudio_api_names[api][1]; } rtaudio_api_t rtaudio_compiled_api_by_name(const char *name) { - RtAudio::Api api = RtAudio::UNSPECIFIED; - if (name) { - api = RtAudio::getCompiledApiByName(name); - } - return (rtaudio_api_t)api; + RtAudio::Api api = RtAudio::UNSPECIFIED; + if (name) { + api = RtAudio::getCompiledApiByName(name); + } + return (rtaudio_api_t)api; } const char *rtaudio_error(rtaudio_t audio) { - if (audio->has_error) { - return audio->errmsg; + if (audio->errtype == RTAUDIO_NO_ERROR) { + return NULL; } - return NULL; + return audio->errmsg; +} + +rtaudio_error_t rtaudio_error_type(rtaudio_t audio) { + return audio->errtype; } rtaudio_t rtaudio_create(rtaudio_api_t api) { @@ -61,7 +65,7 @@ rtaudio_t rtaudio_create(rtaudio_api_t api) { try { audio->audio = new RtAudio((RtAudio::Api)api); } catch (RtAudioError &err) { - audio->has_error = 1; + audio->errtype = (rtaudio_error_t)err.getType(); strncpy(audio->errmsg, err.what(), sizeof(audio->errmsg) - 1); } return audio; @@ -81,7 +85,7 @@ rtaudio_device_info_t rtaudio_get_device_info(rtaudio_t audio, int i) { rtaudio_device_info_t result; std::memset(&result, 0, sizeof(result)); try { - audio->has_error = 0; + audio->errtype = RTAUDIO_NO_ERROR;; RtAudio::DeviceInfo info = audio->audio->getDeviceInfo(i); result.probed = info.probed; result.output_channels = info.outputChannels; @@ -98,7 +102,7 @@ rtaudio_device_info_t rtaudio_get_device_info(rtaudio_t audio, int i) { } } } catch (RtAudioError &err) { - audio->has_error = 1; + audio->errtype = (rtaudio_error_t)err.getType(); strncpy(audio->errmsg, err.what(), sizeof(audio->errmsg) - 1); } return result; @@ -127,7 +131,7 @@ int rtaudio_open_stream(rtaudio_t audio, void *userdata, rtaudio_stream_options_t *options, rtaudio_error_cb_t /*errcb*/) { try { - audio->has_error = 0; + audio->errtype = RTAUDIO_NO_ERROR;; RtAudio::StreamParameters *in = NULL; RtAudio::StreamParameters *out = NULL; RtAudio::StreamOptions *opts = NULL; @@ -165,7 +169,7 @@ int rtaudio_open_stream(rtaudio_t audio, NULL); return 0; } catch (RtAudioError &err) { - audio->has_error = 1; + audio->errtype = (rtaudio_error_t)err.getType(); strncpy(audio->errmsg, err.what(), sizeof(audio->errmsg) - 1); return -1; } @@ -175,10 +179,10 @@ void rtaudio_close_stream(rtaudio_t audio) { audio->audio->closeStream(); } int rtaudio_start_stream(rtaudio_t audio) { try { - audio->has_error = 0; + audio->errtype = RTAUDIO_NO_ERROR;; audio->audio->startStream(); } catch (RtAudioError &err) { - audio->has_error = 1; + audio->errtype = (rtaudio_error_t)err.getType(); strncpy(audio->errmsg, err.what(), sizeof(audio->errmsg) - 1); } return 0; @@ -186,10 +190,10 @@ int rtaudio_start_stream(rtaudio_t audio) { int rtaudio_stop_stream(rtaudio_t audio) { try { - audio->has_error = 0; + audio->errtype = RTAUDIO_NO_ERROR;; audio->audio->stopStream(); } catch (RtAudioError &err) { - audio->has_error = 1; + audio->errtype = (rtaudio_error_t)err.getType(); strncpy(audio->errmsg, err.what(), sizeof(audio->errmsg) - 1); } return 0; @@ -197,10 +201,10 @@ int rtaudio_stop_stream(rtaudio_t audio) { int rtaudio_abort_stream(rtaudio_t audio) { try { - audio->has_error = 0; + audio->errtype = RTAUDIO_NO_ERROR;; audio->audio->abortStream(); } catch (RtAudioError &err) { - audio->has_error = 1; + audio->errtype = (rtaudio_error_t)err.getType(); strncpy(audio->errmsg, err.what(), sizeof(audio->errmsg) - 1); } return 0; @@ -216,10 +220,10 @@ int rtaudio_is_stream_running(rtaudio_t audio) { double rtaudio_get_stream_time(rtaudio_t audio) { try { - audio->has_error = 0; + audio->errtype = RTAUDIO_NO_ERROR;; return audio->audio->getStreamTime(); } catch (RtAudioError &err) { - audio->has_error = 1; + audio->errtype = (rtaudio_error_t)err.getType(); strncpy(audio->errmsg, err.what(), sizeof(audio->errmsg) - 1); return 0; } @@ -227,20 +231,20 @@ double rtaudio_get_stream_time(rtaudio_t audio) { void rtaudio_set_stream_time(rtaudio_t audio, double time) { try { - audio->has_error = 0; + audio->errtype = RTAUDIO_NO_ERROR;; audio->audio->setStreamTime(time); } catch (RtAudioError &err) { - audio->has_error = 1; + audio->errtype = (rtaudio_error_t)err.getType(); strncpy(audio->errmsg, err.what(), sizeof(audio->errmsg) - 1); } } int rtaudio_get_stream_latency(rtaudio_t audio) { try { - audio->has_error = 0; + audio->errtype = RTAUDIO_NO_ERROR; return audio->audio->getStreamLatency(); } catch (RtAudioError &err) { - audio->has_error = 1; + audio->errtype = (rtaudio_error_t)err.getType(); strncpy(audio->errmsg, err.what(), sizeof(audio->errmsg) - 1); return -1; } @@ -248,9 +252,10 @@ int rtaudio_get_stream_latency(rtaudio_t audio) { unsigned int rtaudio_get_stream_sample_rate(rtaudio_t audio) { try { + audio->errtype = RTAUDIO_NO_ERROR; return audio->audio->getStreamSampleRate(); } catch (RtAudioError &err) { - audio->has_error = 1; + audio->errtype = (rtaudio_error_t)err.getType(); strncpy(audio->errmsg, err.what(), sizeof(audio->errmsg) - 1); return -1; } |
