Commit 24f01470 authored by Juanma Barranquero's avatar Juanma Barranquero
Browse files

* sound.c [WINDOWSNT] (SOUND_WARNING): New macro.

  (do_play_sound): Use it.  Don't pass a hardcoded buffer size to mci
  functions, use sizeof.
parent f19fea97
2009-01-12 Juanma Barranquero <lekktu@gmail.com>
* 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 <rudalics@gmx.at>
* keyboard.c (read_char): Fix case where last_nonmenu_event
......
......@@ -1215,7 +1215,7 @@ alsa_write (sd, buffer, nbytes)
{
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 @@ alsa_init (sd)
/* 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 @@ do_play_sound (psz_file, ui_volume)
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 @@ do_play_sound (psz_file, ui_volume)
{
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.");
}
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment