Mercurial > hg > xemacs-beta
view src/ntplay.c @ 4843:715b15990d0a
add more foo_checking_assert macros
lisp.h: Add structure_checking_assert(), gc_checking_assert(), etc. for
all types of error-checking. Also FOO_checking_assert_with_message()
and inline_FOO_checking_assert() -- the latter for use in an inline
function where you want the calling function's line/file to be reported
(requires some conspiracy with the function itself).
Add disabled_assert(), disabled_assert_at_line(),
disabled_assert_with_message(), for what to do when an assert is
disabled. Formerly, we used to do ((void) 0), but now we do
((void) x), so the variable appears used and any side effects of the
expression do get done. In Unicode-internal, the standard assert()
uses this, but not yet in this workspace.
author | Ben Wing <ben@xemacs.org> |
---|---|
date | Wed, 13 Jan 2010 03:01:43 -0600 |
parents | 902d5bd9b75c |
children | 16112448d484 4aebb0131297 |
line wrap: on
line source
/* Sound in windows nt XEmacs. Copyright (C) 1998 Andy Piper. Copyright (C) 2001 Ben Wing. This file is part of XEmacs. XEmacs is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. XEmacs is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with XEmacs; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.*/ /* Synched up with: Not in FSF. */ /* This file Mule-ized by Ben Wing, 5-15-01. */ #include <config.h> #include "lisp.h" #include "sound.h" #include "syswindows.h" #include "sysfile.h" static int play_sound_data_1 (Binbyte *data, int length, int volume, int convert); void nt_play_sound_file (Lisp_Object path, int UNUSED (volume)) { DWORD flags = SND_ASYNC | SND_NODEFAULT | SND_FILENAME; Lisp_Object fname = Ffile_name_nondirectory (path); Extbyte *fnameext; LISP_STRING_TO_TSTR (fname, fnameext); if (qxeSearchPath (NULL, fnameext, NULL, 0, NULL, NULL) == 0) { /* file isn't in the path so read it as data */ int size; Binbyte *data; int ofd = qxe_open (XSTRING_DATA (path), O_RDONLY | OPEN_BINARY, 0); if (ofd < 0) return; size = lseek (ofd, 0, SEEK_END); data = xnew_binbytes (size); lseek (ofd, 0, SEEK_SET); if (!data) { retry_close (ofd); return; } if (retry_read (ofd, data, size) != size) { retry_close (ofd); xfree (data, Binbyte *); return; } retry_close (ofd); play_sound_data_1 (data, size, 100, FALSE); } else qxePlaySound (fnameext, NULL, flags); } /* mswindows can't cope with playing a sound from alloca space so we have to convert if necessary */ static int play_sound_data_1 (Binbyte *data, int length, int UNUSED (volume), int convert_to_malloc) { DWORD flags = SND_ASYNC | SND_MEMORY | SND_NODEFAULT; static Binbyte *sound_data = 0; if (sound_data) { qxePlaySound (NULL, NULL, flags); xfree (sound_data, Binbyte *); sound_data = 0; } if (convert_to_malloc) { sound_data = xnew_binbytes (length); memcpy (sound_data, data, length); } else sound_data = data; qxePlaySound ((Extbyte *) sound_data, NULL, flags); /* #### Error handling? */ return 1; } int play_sound_data (Binbyte *data, int length, int volume) { return play_sound_data_1 (data, length, volume, TRUE); }