1. 04 Jan, 2013 4 commits
  2. 25 Sep, 2012 1 commit
  3. 29 Aug, 2012 1 commit
  4. 12 Jun, 2012 1 commit
  5. 20 Oct, 2011 1 commit
  6. 10 Oct, 2011 1 commit
  7. 19 Sep, 2011 1 commit
  8. 01 Sep, 2011 1 commit
    • Max Kellermann's avatar
      output_thread: reimplement CANCEL synchronization · 8b0b4ff0
      Max Kellermann authored
      The output thread could hang indefinitely after finishing CANCEL,
      because it could have missed the signal while the output was not
      unlocked in ao_command_finished().
      
      This patch removes the wait() call after CANCEL, and adds the flag
      "allow_play" instead.  While this flag is set, playback is skipped.
      With this flag, there will not be any excess wait() call after the
      pipe has been cleared.
      
      This patch fixes a bug that causes mpd to discontinue playback after
      seeking, due to the race condition described above.
      8b0b4ff0
  9. 20 Jul, 2011 1 commit
  10. 16 Mar, 2011 1 commit
  11. 29 Jan, 2011 1 commit
  12. 10 Jan, 2011 2 commits
  13. 07 Jan, 2011 1 commit
    • Max Kellermann's avatar
      output_thread: fix double lock · 5f069996
      Max Kellermann authored
      During the whole output thread, the audio_output object is locked, and
      it is only unlocked while waiting for the GCond and while running a
      plugin method.  The error handler in ao_play_chunk() attempted to lock
      the object again, which was code from MPD 0.15.x which should have
      been removed a long time ago.
      5f069996
  14. 21 Dec, 2010 1 commit
  15. 05 Nov, 2010 1 commit
  16. 04 Nov, 2010 2 commits
  17. 25 Sep, 2010 1 commit
    • Thomas Jansen's avatar
      eliminate g_error() usage · 28bcb8bd
      Thomas Jansen authored
      Replaced all occurrences of g_error() with MPD_ERROR() located in a new header
      file 'mpd_error.h'. This macro uses g_critical() to print the error message
      and then exits gracefully in contrast to g_error() which would internally call
      abort() to produce a core dump.
      
      The macro name is distinctive and allows to find all places with dubious error
      handling. The long-term goal is to get rid of MPD_ERROR() altogether. To
      facilitate the eventual removal of this macro it was added in a new header
      file rather than to an existing header file.
      
      This fixes #2995 and #3007.
      28bcb8bd
  18. 19 Aug, 2010 1 commit
  19. 02 May, 2010 4 commits
  20. 17 Feb, 2010 2 commits
    • Max Kellermann's avatar
      replay_gain: optionally use hardware mixer to apply replay gain · 96493e03
      Max Kellermann authored
      Add an option for each audio output which enables the use of the
      hardware mixer, instead of the software volume code.
      
      This is hardware specific, and assumes linear volume control.  This is
      not the case for hardware mixers which were tested, making this patch
      somewhat useless, but we will use it to experiment with the settings,
      to find a good solution.
      96493e03
    • Max Kellermann's avatar
      replay_gain: reimplement as a filter plugin · 752dfb3d
      Max Kellermann authored
      Apply the replay gain in the output thread.  This means a new setting
      will be active instantly, without going through the whole music pipe.
      And we might have different replay gain settings for each audio output
      device.
      752dfb3d
  21. 01 Jan, 2010 1 commit
  22. 14 Nov, 2009 1 commit
  23. 12 Nov, 2009 1 commit
    • Max Kellermann's avatar
      include config.h in all sources · 5b82ffc2
      Max Kellermann authored
      After we've been hit by Large File Support problems several times in
      the past week (which only occur on 32 bit platforms, which I don't
      have), this is yet another attempt to fix the issue.
      5b82ffc2
  24. 09 Nov, 2009 1 commit
  25. 02 Nov, 2009 3 commits
  26. 31 Oct, 2009 1 commit
  27. 29 Oct, 2009 3 commits
    • Max Kellermann's avatar
      output_thread: return bool from ao_play() · cec019ef
      Max Kellermann authored
      Return false when there was no chunk in the pipe.  If the function
      returns true, then audio_output_task() will not wait for a notify from
      the player thread.  This fixes a race condition.
      cec019ef
    • Max Kellermann's avatar
      output: consistently lock audio output objects · bde3d143
      Max Kellermann authored
      Always keep the audio_output object locked within the output thread,
      unless a plugin method is called.  This fixes several race conditions.
      bde3d143
    • Max Kellermann's avatar
      output_plugin: added method "drain" · 1403172e
      Max Kellermann authored
      drain() is the opposite of cancel(): it waits until all data in the
      buffer has finished playing.  Instead of implicitly draining in the
      close() method like the ALSA plugin has been doing it forever, let the
      output thread decide whether to drain or to cancel.
      1403172e