projects
/
chise
/
xemacs-chise.git-
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
This commit was manufactured by cvs2svn to create branch 'utf-2000'.
[chise/xemacs-chise.git-]
/
src
/
sound.c
diff --git
a/src/sound.c
b/src/sound.c
index
ccf6b41
..
9bdedb9
100644
(file)
--- a/
src/sound.c
+++ b/
src/sound.c
@@
-43,6
+43,7
@@
Boston, MA 02111-1307, USA. */
#ifdef HAVE_NATIVE_SOUND
# include <netdb.h>
#ifdef HAVE_NATIVE_SOUND
# include <netdb.h>
+# include "nativesound.h"
#endif
#ifdef HAVE_ESD_SOUND
#endif
#ifdef HAVE_ESD_SOUND
@@
-58,11
+59,6
@@
Lisp_Object Vsynchronous_sounds;
Lisp_Object Vnative_sound_only_on_console;
Lisp_Object Q_volume, Q_pitch, Q_duration, Q_sound;
Lisp_Object Vnative_sound_only_on_console;
Lisp_Object Q_volume, Q_pitch, Q_duration, Q_sound;
-/* These are defined in the appropriate file (sunplay.c, sgiplay.c,
- or hpplay.c). */
-
-extern void play_sound_file (char *name, int volume);
-extern void play_sound_data (unsigned char *data, int length, int volume);
#ifdef HAVE_NAS_SOUND
extern int nas_play_sound_file (char *name, int volume);
#ifdef HAVE_NAS_SOUND
extern int nas_play_sound_file (char *name, int volume);
@@
-139,11
+135,17
@@
Windows the sound file must be in WAV format.
if (DEVICE_CONNECTED_TO_ESD_P (d))
{
char *fileext;
if (DEVICE_CONNECTED_TO_ESD_P (d))
{
char *fileext;
+ int result;
TO_EXTERNAL_FORMAT (LISP_STRING, file,
C_STRING_ALLOCA, fileext,
Qfile_name);
TO_EXTERNAL_FORMAT (LISP_STRING, file,
C_STRING_ALLOCA, fileext,
Qfile_name);
- if (esd_play_sound_file (fileext, vol))
+
+ /* #### ESD uses alarm(). But why should we also stop SIGIO? */
+ stop_interrupts ();
+ result = esd_play_sound_file (fileext, vol);
+ start_interrupts ();
+ if (result)
return Qnil;
}
#endif /* HAVE_ESD_SOUND */
return Qnil;
}
#endif /* HAVE_ESD_SOUND */
@@
-277,7
+279,7
@@
See the variable `sound-alist'.
/* variable `sound' is anything that can be a cdr in sound-alist */
Lisp_Object new_volume, pitch, duration, data;
int loop_count = 0;
/* variable `sound' is anything that can be a cdr in sound-alist */
Lisp_Object new_volume, pitch, duration, data;
int loop_count = 0;
- int vol, pit, dur;
+ int vol, pit, dur, succes;
struct device *d = decode_device (device);
/* NOTE! You'd better not signal an error in here. */
struct device *d = decode_device (device);
/* NOTE! You'd better not signal an error in here. */
@@
-336,8
+338,14
@@
See the variable `sound-alist'.
TO_EXTERNAL_FORMAT (LISP_STRING, sound, ALLOCA, (soundext, soundextlen),
Qbinary);
TO_EXTERNAL_FORMAT (LISP_STRING, sound, ALLOCA, (soundext, soundextlen),
Qbinary);
- if (esd_play_sound_data (soundext, soundextlen, vol))
- return Qnil;
+
+ /* #### ESD uses alarm(). But why should we also stop SIGIO? */
+ stop_interrupts ();
+ succes = esd_play_sound_data (soundext, soundextlen, vol);
+ start_interrupts ();
+ QUIT;
+ if(succes)
+ return Qnil;
}
#endif /* HAVE_ESD_SOUND */
}
#endif /* HAVE_ESD_SOUND */
@@
-353,10
+361,11
@@
See the variable `sound-alist'.
Qbinary);
/* The sound code doesn't like getting SIGIO interrupts. Unix sucks! */
stop_interrupts ();
Qbinary);
/* The sound code doesn't like getting SIGIO interrupts. Unix sucks! */
stop_interrupts ();
- play_sound_data ((unsigned char*)soundext, soundextlen, vol);
+ succes = play_sound_data ((unsigned char*)soundext, soundextlen, vol);
start_interrupts ();
QUIT;
start_interrupts ();
QUIT;
- return Qnil;
+ if (succes)
+ return Qnil;
}
#endif /* HAVE_NATIVE_SOUND */
}
#endif /* HAVE_NATIVE_SOUND */