emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] trunk r113077: * sound.c: Integer cleanups.


From: Paul Eggert
Subject: [Emacs-diffs] trunk r113077: * sound.c: Integer cleanups.
Date: Wed, 19 Jun 2013 07:36:39 +0000
User-agent: Bazaar (2.6b2)

------------------------------------------------------------
revno: 113077
revision-id: address@hidden
parent: address@hidden
author: Paul Eggert  <address@hidden>
committer: Paul Eggert <address@hidden>
branch nick: trunk
timestamp: Wed 2013-06-19 00:36:20 -0700
message:
  * sound.c: Integer cleanups.
  
  Remove unnecessary forward decls.
  (struct sound_device): The 'file' member is now a Lisp_Object, not
  a char *, so that we needn't invoke alloca on a huge size.
  (Fplay_sound_internal): Adjust to this.
  (string_default): New function.
  (vox_open, vox_init, alsa_open, alsa_configure, alsa_init):
  Use it to adjust to the struct sound_device change.
  (parse_sound, wav_init, au_init, alsa_init): Use bool for booleans.
  (be2hs) [0]: Remove.
modified:
  src/ChangeLog                  changelog-20091113204419-o5vbwnq5f7feedwu-1438
  src/sound.c                    sound.c-20091113204419-o5vbwnq5f7feedwu-1323
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog     2013-06-19 05:45:35 +0000
+++ b/src/ChangeLog     2013-06-19 07:36:20 +0000
@@ -1,5 +1,16 @@
 2013-06-19  Paul Eggert  <address@hidden>
 
+       * sound.c: Integer cleanups.
+       Remove unnecessary forward decls.
+       (struct sound_device): The 'file' member is now a Lisp_Object, not
+       a char *, so that we needn't invoke alloca on a huge size.
+       (Fplay_sound_internal): Adjust to this.
+       (string_default): New function.
+       (vox_open, vox_init, alsa_open, alsa_configure, alsa_init):
+       Use it to adjust to the struct sound_device change.
+       (parse_sound, wav_init, au_init, alsa_init): Use bool for booleans.
+       (be2hs) [0]: Remove.
+
        * syntax.c (skip_chars): Don't use uninitialized storage
        when searching a multibyte buffer for characters that are not in a
        unibyte string that contains non-ASCII characters.

=== modified file 'src/sound.c'
--- a/src/sound.c       2013-02-17 16:49:27 +0000
+++ b/src/sound.c       2013-06-19 07:36:20 +0000
@@ -181,8 +181,8 @@
 
 struct sound_device
 {
-  /* The name of the device or null meaning use a default device name.  */
-  char *file;
+  /* If a string, the name of the device; otherwise use a default.  */
+  Lisp_Object file;
 
   /* File descriptor of the device.  */
   int fd;
@@ -271,25 +271,12 @@
 
 /* Function prototypes.  */
 
-static void vox_open (struct sound_device *);
-static void vox_configure (struct sound_device *);
-static void vox_close (struct sound_device *sd);
-static void vox_choose_format (struct sound_device *, struct sound *);
-static int vox_init (struct sound_device *);
 static void vox_write (struct sound_device *, const char *, ptrdiff_t);
-static void find_sound_type (struct sound *);
-static u_int32_t le2hl (u_int32_t);
-static u_int16_t le2hs (u_int16_t);
-static u_int32_t be2hl (u_int32_t);
-static int wav_init (struct sound *);
+static bool wav_init (struct sound *);
 static void wav_play (struct sound *, struct sound_device *);
-static int au_init (struct sound *);
+static bool au_init (struct sound *);
 static void au_play (struct sound *, struct sound_device *);
 
-#if 0 /* Currently not used.  */
-static u_int16_t be2hs (u_int16_t);
-#endif
-
 /* END: Non Windows Definitions */
 #else /* WINDOWSNT */
 
@@ -338,6 +325,15 @@
 }
 
 
+/* Return S's value as a string if S is a string, otherwise DEFAULT_VALUE.  */
+
+static char const *
+string_default (Lisp_Object s, char const *default_value)
+{
+  return STRINGP (s) ? SSDATA (s) : default_value;
+}
+
+
 /* Parse sound specification SOUND, and fill ATTRS with what is
    found.  Value is non-zero if SOUND Is a valid sound specification.
    A valid sound specification is a list starting with the symbol
@@ -364,7 +360,7 @@
    VOL must be an integer in the range [0, 100], or a float in the
    range [0, 1].  */
 
-static int
+static bool
 parse_sound (Lisp_Object sound, Lisp_Object *attrs)
 {
   /* SOUND must be a list starting with the symbol `sound'.  */
@@ -527,9 +523,9 @@
    contains the first MAX_SOUND_HEADER_BYTES number of bytes from the
    sound file.  If the file is a WAV-format file, set up interface
    functions in S and convert header fields to host byte-order.
-   Value is non-zero if the file is a WAV file.  */
+   Value is true if the file is a WAV file.  */
 
-static int
+static bool
 wav_init (struct sound *s)
 {
   struct wav_header *header = (struct wav_header *) s->header;
@@ -635,9 +631,9 @@
    contains the first MAX_SOUND_HEADER_BYTES number of bytes from the
    sound file.  If the file is a AU-format file, set up interface
    functions in S and convert header fields to host byte-order.
-   Value is non-zero if the file is an AU file.  */
+   Value is true if the file is an AU file.  */
 
-static int
+static bool
 au_init (struct sound *s)
 {
   struct au_header *header = (struct au_header *) s->header;
@@ -706,20 +702,14 @@
    has a compatible own driver aka Luigi's driver.  */
 
 
-/* Open device SD.  If SD->file is non-null, open that device,
+/* Open device SD.  If SD->file is a string, open that device,
    otherwise use a default device name.  */
 
 static void
 vox_open (struct sound_device *sd)
 {
-  const char *file;
-
   /* Open the sound device (eg /dev/dsp).  */
-  if (sd->file)
-    file = sd->file;
-  else
-    file = DEFAULT_SOUND_DEVICE;
-
+  char const *file = string_default (sd->file, DEFAULT_SOUND_DEVICE);
   sd->fd = emacs_open (file, O_WRONLY, 0);
   if (sd->fd < 0)
     sound_perror (file);
@@ -862,18 +852,12 @@
 /* Initialize device SD.  Set up the interface functions in the device
    structure.  */
 
-static int
+static bool
 vox_init (struct sound_device *sd)
 {
-  const char *file;
-  int fd;
-
   /* Open the sound device (eg /dev/dsp).  */
-  if (sd->file)
-    file = sd->file;
-  else
-    file = DEFAULT_SOUND_DEVICE;
-  fd = emacs_open (file, O_WRONLY, 0);
+  char const *file = string_default (sd->file, DEFAULT_SOUND_DEVICE);
+  int fd = emacs_open (file, O_WRONLY, 0);
   if (fd >= 0)
     emacs_close (fd);
   else
@@ -924,23 +908,17 @@
   snd_pcm_uframes_t period_size;
 };
 
-/* Open device SD.  If SD->file is non-null, open that device,
+/* Open device SD.  If SD->file is a string, open that device,
    otherwise use a default device name.  */
 
 static void
 alsa_open (struct sound_device *sd)
 {
-  const char *file;
-  struct alsa_params *p;
+  /* Open the sound device.  Default is "default".  */
+  struct alsa_params *p = xmalloc (sizeof *p);
+  char const *file = string_default (sd->file, DEFAULT_ALSA_SOUND_DEVICE);
   int err;
 
-  /* Open the sound device.  Default is "default".  */
-  if (sd->file)
-    file = sd->file;
-  else
-    file = DEFAULT_ALSA_SOUND_DEVICE;
-
-  p = xmalloc (sizeof *p);
   p->handle = NULL;
   p->hwparams = NULL;
   p->swparams = NULL;
@@ -1052,10 +1030,10 @@
       int chn;
       snd_mixer_t *handle;
       snd_mixer_elem_t *e;
-      const char *file = sd->file ? sd->file : DEFAULT_ALSA_SOUND_DEVICE;
-
       if (snd_mixer_open (&handle, 0) >= 0)
         {
+         char const *file = string_default (sd->file,
+                                            DEFAULT_ALSA_SOUND_DEVICE);
           if (snd_mixer_attach (handle, file) >= 0
               && snd_mixer_load (handle) >= 0
               && snd_mixer_selem_register (handle, NULL, NULL) >= 0)
@@ -1212,19 +1190,14 @@
 /* Initialize device SD.  Set up the interface functions in the device
    structure.  */
 
-static int
+static bool
 alsa_init (struct sound_device *sd)
 {
-  const char *file;
+  /* Open the sound device.  Default is "default".  */
+  char const *file = string_default (sd->file, DEFAULT_ALSA_SOUND_DEVICE);
   snd_pcm_t *handle;
   int err;
 
-  /* Open the sound device.  Default is "default".  */
-  if (sd->file)
-    file = sd->file;
-  else
-    file = DEFAULT_ALSA_SOUND_DEVICE;
-
   snd_lib_error_set_handler ((snd_lib_error_handler_t) snd_error_quiet);
   err = snd_pcm_open (&handle, file, SND_PCM_STREAM_PLAYBACK, 0);
   snd_lib_error_set_handler (NULL);
@@ -1404,12 +1377,7 @@
   find_sound_type (current_sound);
 
   /* Set up a device.  */
-  if (STRINGP (attrs[SOUND_DEVICE]))
-    {
-      int len = SCHARS (attrs[SOUND_DEVICE]);
-      current_sound_device->file = alloca (len + 1);
-      strcpy (current_sound_device->file, SSDATA (attrs[SOUND_DEVICE]));
-    }
+  current_sound_device->file = attrs[SOUND_DEVICE];
 
   if (INTEGERP (attrs[SOUND_VOLUME]))
     current_sound_device->volume = XFASTINT (attrs[SOUND_VOLUME]);


reply via email to

[Prev in Thread] Current Thread [Next in Thread]