+\r
+ RtAudioErrorCallback errorCallback = (RtAudioErrorCallback) stream_.callbackInfo.errorCallback;\r
+ if ( errorCallback ) {\r
+ // abortStream() can generate new error messages. Ignore them. Just keep original one.\r
+ static bool firstErrorOccured = false;\r
+\r
+ if ( firstErrorOccured )\r
+ return;\r
+\r
+ firstErrorOccured = true;\r
+ const std::string errorMessage = errorText_;\r
+\r
+ if ( type != RtError::WARNING && stream_.state != STREAM_STOPPED) {\r
+ stream_.callbackInfo.isRunning = false; // exit from the thread\r
+ abortStream();\r
+ }\r
+\r
+ errorCallback( type, errorMessage );\r
+ firstErrorOccured = false;\r
+ return;\r
+ }\r
+\r