diff options
author | malc <av1474@comtv.ru> | 2010-08-06 13:09:41 +0400 |
---|---|---|
committer | malc <av1474@comtv.ru> | 2010-08-06 13:15:31 +0400 |
commit | d087bb3e38fbb705ae65c55457b9ef3e0a5d2511 (patch) | |
tree | 8afd033520d61f05d80a3c70165af0cd595583ef /audio | |
parent | 4b7c0418c0d33b8e5c690a33dce9c6664a714a24 (diff) | |
download | hqemu-d087bb3e38fbb705ae65c55457b9ef3e0a5d2511.zip hqemu-d087bb3e38fbb705ae65c55457b9ef3e0a5d2511.tar.gz |
audio/sdl: be more anal about errors
Signed-off-by: malc <av1474@comtv.ru>
Diffstat (limited to 'audio')
-rw-r--r-- | audio/sdlaudio.c | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/audio/sdlaudio.c b/audio/sdlaudio.c index c353016..0f23fd3 100644 --- a/audio/sdlaudio.c +++ b/audio/sdlaudio.c @@ -184,11 +184,19 @@ static int sdl_open (SDL_AudioSpec *req, SDL_AudioSpec *obt) { int status; #ifndef _WIN32 + int err; sigset_t new, old; /* Make sure potential threads created by SDL don't hog signals. */ - sigfillset (&new); - pthread_sigmask (SIG_BLOCK, &new, &old); + err = sigfillset (&new); + if (err) { + dolog ("sdl_open: sigfillset failed: %s\n", strerror (errno)); + } + err = pthread_sigmask (SIG_BLOCK, &new, &old); + if (err) { + dolog ("sdl_open: pthread_sigmask failed: %s\n", strerror (err)); + return -1; + } #endif status = SDL_OpenAudio (req, obt); @@ -197,7 +205,14 @@ static int sdl_open (SDL_AudioSpec *req, SDL_AudioSpec *obt) } #ifndef _WIN32 - pthread_sigmask (SIG_SETMASK, &old, NULL); + err = pthread_sigmask (SIG_SETMASK, &old, NULL); + if (err) { + dolog ("sdl_open: pthread_sigmask (restore) failed: %s\n", + strerror (errno)); + /* We have failed to restore original signal mask, all bets are off, + so exit the process */ + exit (EXIT_FAILURE); + } #endif return status; } |