# HG changeset patch # User Juanma Barranquero # Date 1231777111 0 # Node ID 706175eda1de71ed99cd351c9e35a7046fc36b2d # Parent d4a656ae8ace021815e09f4d6b503d36ed0d0ba7 * sound.c [WINDOWSNT] (SOUND_WARNING): New macro. (do_play_sound): Use it. Don't pass a hardcoded buffer size to mci functions, use sizeof. diff -r d4a656ae8ace -r 706175eda1de src/ChangeLog --- a/src/ChangeLog Mon Jan 12 10:22:35 2009 +0000 +++ b/src/ChangeLog Mon Jan 12 16:18:31 2009 +0000 @@ -1,3 +1,9 @@ +2009-01-12 Juanma Barranquero + + * sound.c [WINDOWSNT] (SOUND_WARNING): New macro. + (do_play_sound): Use it. Don't pass a hardcoded buffer size to mci + functions, use sizeof. + 2009-01-12 Martin Rudalics * keyboard.c (read_char): Fix case where last_nonmenu_event diff -r d4a656ae8ace -r 706175eda1de src/sound.c --- a/src/sound.c Mon Jan 12 10:22:35 2009 +0000 +++ b/src/sound.c Mon Jan 12 16:18:31 2009 +0000 @@ -1215,7 +1215,7 @@ { snd_pcm_uframes_t frames = (nbytes - nwritten)/fact; if (frames == 0) break; - + err = snd_pcm_writei (p->handle, buffer + nwritten, frames); if (err < 0) { @@ -1301,6 +1301,16 @@ /* BEGIN: Windows specific functions */ +#define SOUND_WARNING(fun, error, text) \ + { \ + char buf[1024]; \ + char err_string[MAXERRORLENGTH]; \ + fun (error, err_string, sizeof (err_string)); \ + snprintf (buf, sizeof (buf), "%s\nError: %s", \ + text, err_string); \ + sound_warning (buf); \ + } + static int do_play_sound (psz_file, ui_volume) const char *psz_file; @@ -1314,16 +1324,17 @@ unsigned long ui_volume_org = 0; BOOL b_reset_volume = FALSE; - memset (sz_cmd_buf, 0, sizeof(sz_cmd_buf)); - memset (sz_ret_buf, 0, sizeof(sz_ret_buf)); + memset (sz_cmd_buf, 0, sizeof (sz_cmd_buf)); + memset (sz_ret_buf, 0, sizeof (sz_ret_buf)); sprintf (sz_cmd_buf, "open \"%s\" alias GNUEmacs_PlaySound_Device wait", psz_file); - mci_error = mciSendString (sz_cmd_buf, sz_ret_buf, 520, NULL); + mci_error = mciSendString (sz_cmd_buf, sz_ret_buf, sizeof (sz_ret_buf), NULL); if (mci_error != 0) { - sound_warning ("The open mciSendString command failed to open\n" - "the specified sound file"); + SOUND_WARNING (mciGetErrorString, mci_error, + "The open mciSendString command failed to open " + "the specified sound file."); i_result = (int) mci_error; return i_result; } @@ -1334,42 +1345,46 @@ { b_reset_volume = TRUE; mm_result = waveOutSetVolume ((HWAVEOUT) WAVE_MAPPER, ui_volume); - if ( mm_result != MMSYSERR_NOERROR) + if (mm_result != MMSYSERR_NOERROR) { - sound_warning ("waveOutSetVolume failed to set the volume level\n" - "of the WAVE_MAPPER device.\n" - "As a result, the user selected volume level will\n" - "not be used."); + SOUND_WARNING (waveOutGetErrorText, mm_result, + "waveOutSetVolume failed to set the volume level " + "of the WAVE_MAPPER device.\n" + "As a result, the user selected volume level will " + "not be used."); } } else { - sound_warning ("waveOutGetVolume failed to obtain the original\n" + SOUND_WARNING (waveOutGetErrorText, mm_result, + "waveOutGetVolume failed to obtain the original " "volume level of the WAVE_MAPPER device.\n" - "As a result, the user selected volume level will\n" + "As a result, the user selected volume level will " "not be used."); } } - memset (sz_cmd_buf, 0, sizeof(sz_cmd_buf)); - memset (sz_ret_buf, 0, sizeof(sz_ret_buf)); + memset (sz_cmd_buf, 0, sizeof (sz_cmd_buf)); + memset (sz_ret_buf, 0, sizeof (sz_ret_buf)); strcpy (sz_cmd_buf, "play GNUEmacs_PlaySound_Device wait"); - mci_error = mciSendString (sz_cmd_buf, sz_ret_buf, 520, NULL); + mci_error = mciSendString (sz_cmd_buf, sz_ret_buf, sizeof (sz_ret_buf), NULL); if (mci_error != 0) { - sound_warning ("The play mciSendString command failed to play the\n" - "opened sound file."); + SOUND_WARNING (mciGetErrorString, mci_error, + "The play mciSendString command failed to play the " + "opened sound file."); i_result = (int) mci_error; } - memset (sz_cmd_buf, 0, sizeof(sz_cmd_buf)); - memset (sz_ret_buf, 0, sizeof(sz_ret_buf)); + memset (sz_cmd_buf, 0, sizeof (sz_cmd_buf)); + memset (sz_ret_buf, 0, sizeof (sz_ret_buf)); strcpy (sz_cmd_buf, "close GNUEmacs_PlaySound_Device wait"); - mci_error = mciSendString (sz_cmd_buf, sz_ret_buf, 520, NULL); + mci_error = mciSendString (sz_cmd_buf, sz_ret_buf, sizeof (sz_ret_buf), NULL); if (b_reset_volume == TRUE) { - mm_result=waveOutSetVolume ((HWAVEOUT) WAVE_MAPPER, ui_volume_org); + mm_result = waveOutSetVolume ((HWAVEOUT) WAVE_MAPPER, ui_volume_org); if (mm_result != MMSYSERR_NOERROR) { - sound_warning ("waveOutSetVolume failed to reset the original volume\n" + SOUND_WARNING (waveOutGetErrorText, mm_result, + "waveOutSetVolume failed to reset the original volume " "level of the WAVE_MAPPER device."); } }