1. 10 Sep, 2008 6 commits
  2. 09 Sep, 2008 9 commits
  3. 08 Sep, 2008 12 commits
  4. 07 Sep, 2008 13 commits
    • Max Kellermann's avatar
      output: replace audio_output.*Func with audio_output.plugin · a0103dd0
      Max Kellermann authored
      Instead of copying all that stuff from the audio output plugin to the
      audio output structure, store a pointer to the plugin.
      a0103dd0
    • Max Kellermann's avatar
      output: renamed typedef AudioOutput to struct audio_output · 3b09c54b
      Max Kellermann authored
      Also rename AudioOutputPlugin to struct audio_output_plugin, and use
      forward declarations to reduce include dependencies.
      3b09c54b
    • Max Kellermann's avatar
      output: added output_api.h · bed2a49f
      Max Kellermann authored
      Just like decoder_api.h, output_api.h provides the audio output API
      which is used by the plugins.
      bed2a49f
    • Max Kellermann's avatar
      pack the struct audio_format · dc7c6bd1
      Max Kellermann authored
      Due to clumsy layout, the audio_format struct took 12 bytes.  Move the
      "channels" to the end, so it can be merged into the same 32 bit slot
      as "bits", which reduces the struct size to 8 bytes.
      dc7c6bd1
    • Max Kellermann's avatar
      audio_format: converted typedef AudioFormat to struct audio_format · f1dd9c20
      Max Kellermann authored
      Get rid of CamelCase, and don't use a typedef, so we can
      forward-declare it, and unclutter the include dependencies.
      f1dd9c20
    • Max Kellermann's avatar
      playlist: return -1 after assert(0) · bd81fd8b
      Max Kellermann authored
      print_playlist_result() had an assert(0) at the end, in case there was
      an invalid result value.  With NDEBUG, this resulted in a function not
      returning a value - add a dummy "return -1" at the end to keep gcc
      quiet.
      bd81fd8b
    • Max Kellermann's avatar
      playlist: replaced song_id_exists() with song_id_to_position() · 3553ed2f
      Max Kellermann authored
      Since all callers of song_id_exists() will map it to a song position
      after the check, introduce a new function called song_id_to_position()
      which performs both the check and the map lookup, including nice
      assertions.
      3553ed2f
    • Max Kellermann's avatar
      command: use client_[gs]et_permission() · 1ce5f4d7
      Max Kellermann authored
      Don't pass a pointer to client->permission to processCommand(), better
      let the code in command.c use the new permission getter/setter
      functions.
      1ce5f4d7
    • Max Kellermann's avatar
      client: added client_[gs]et_permission() · 2835e376
      Max Kellermann authored
      The code in command.c shouldn't mess with a pointer to
      client->permission.  Provide an API for accessing this value.
      2835e376
    • Max Kellermann's avatar
      command: don't pass permission as pointer where appropriate · bf6994d8
      Max Kellermann authored
      Some functions don't want to modify a client's permission set.  Pass
      the permissions to them by value, not by reference.
      bf6994d8
    • Eric Wong's avatar
      audio_format: volatile removal · 18fc10a9
      Eric Wong authored
      volatile provides absolutely no guarantee thread-safety in SMP
      environments.  volatile was designed to access memory locations
      in peripheral hardware directly; not for SMP.  If volatile is
      needed to work properly on SMP, then it is only hiding subtle
      bugs.
      
      volatile only prevents the /compiler/ from making optimizations
      when accessing variables.  CPUs do their own optimizations at
      runtime so it cannot guarantee registers of CPUs are flushed
      to memory cache-coherent access on different CPUs.
      
      Furthermore, the thread-communication via condition variables
      between threads sharing audio formats already results in memory
      barriers.
      18fc10a9
    • Eric Wong's avatar
      tag: oops, of course items is now ** and not * · a5f68b3c
      Eric Wong authored
      Gah, it seems like doing sizeof here either way is error
      prone.  Too easy to leave out a '*' character we can
      forget.
      a5f68b3c
    • Eric Wong's avatar
      tag: lock all accesses to tag_pool · 3c4de5b5
      Eric Wong authored
      The tag pool is a shared global resource that is infrequently
      modified.  However, it can occasionally be modified by several
      threads, especially by the metadata_pipe for streaming metadata
      (both reading/writing).
      
      The bulk tag_item pool is NOT locked as currently only the
      update thread uses it.
      3c4de5b5