From 60eef57795643d25f555f80f237afc734e0b827a Mon Sep 17 00:00:00 2001 From: Roman Fomin Date: Tue, 4 Apr 2023 20:08:39 +0700 Subject: [PATCH] win midi: don't show MessageBox on errors --- src/i_winmusic.c | 13 +++++++------ src/m_io.c | 2 +- src/m_io.h | 4 ++++ 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/i_winmusic.c b/src/i_winmusic.c index 1349ba94..9adafded 100644 --- a/src/i_winmusic.c +++ b/src/i_winmusic.c @@ -28,6 +28,7 @@ #include "i_sound.h" #include "i_system.h" #include "m_misc2.h" +#include "m_io.h" #include "memio.h" #include "mus2mid.h" #include "midifile.h" @@ -154,19 +155,19 @@ static buffer_t buffer; static boolean initial_playback = false; -// Message box for midiStream errors. +// Check for midiStream errors. static void MidiError(const char *prefix, DWORD dwError) { - char szErrorBuf[MAXERRORLENGTH]; + wchar_t werror[MAXERRORLENGTH]; MMRESULT mmr; - mmr = midiOutGetErrorText(dwError, (LPSTR) szErrorBuf, MAXERRORLENGTH); + mmr = midiOutGetErrorTextW(dwError, (LPWSTR)werror, MAXERRORLENGTH); if (mmr == MMSYSERR_NOERROR) { - char *msg = M_StringJoin(prefix, ": ", szErrorBuf, NULL); - MessageBox(NULL, msg, "midiStream Error", MB_ICONEXCLAMATION); - free(msg); + char *error = ConvertWideToUtf8(werror); + fprintf(stderr, "%s: %s.\n", prefix, error); + free(error); } else { diff --git a/src/m_io.c b/src/m_io.c index b482e815..446ba56a 100644 --- a/src/m_io.c +++ b/src/m_io.c @@ -107,7 +107,7 @@ static wchar_t *ConvertUtf8ToWide(const char *str) return ConvertMultiByteToWide(str, CP_UTF8); } -static char *ConvertWideToUtf8(const wchar_t *wstr) +char *ConvertWideToUtf8(const wchar_t *wstr) { return ConvertWideToMultiByte(wstr, CP_UTF8); } diff --git a/src/m_io.h b/src/m_io.h index 480002c6..ea966e02 100644 --- a/src/m_io.h +++ b/src/m_io.h @@ -49,6 +49,10 @@ int M_access(const char *path, int mode); void M_MakeDirectory(const char *dir); char *M_getenv(const char *name); +#ifdef _WIN32 +char *ConvertWideToUtf8(const wchar_t *wstr); +#endif + char *M_ConvertSysNativeMBToUtf8(const char *str); char *M_ConvertUtf8ToSysNativeMB(const char *str);