1. 30 Oct, 2008 1 commit
  2. 29 Oct, 2008 5 commits
    • Max Kellermann's avatar
      output: always call cancel() before stop() · 67831453
      Max Kellermann authored
      Stopping an audio output device without cancelling its buffer doesn't
      make sense.  Combine the two operations, which saves several cancel
      calls.
      67831453
    • Max Kellermann's avatar
      output: use bool for return values and flags · 58c5bee9
      Max Kellermann authored
      Don't return 0/-1 on success/error, but true/false.  Instead of int,
      use bool for storing flags.
      58c5bee9
    • Max Kellermann's avatar
      player: handle songs shorter than the initial buffer · 2867c8e9
      Max Kellermann authored
      When the decoder exited before the buffer has grown big enough
      ("buffer_before_play"), the player thread waited forever.  Add an
      additional check which disables buffering as soon as the decoder
      exits.
      2867c8e9
    • Max Kellermann's avatar
      player: added variable "play_audio_format" · c6714f17
      Max Kellermann authored
      The local variable "play_audio_format" is updated every time the
      player starts playing a new song.  This way, we always know exactly
      which audio format is current.  The old code broke when a new song had
      a different format: ob.audio_format is the format of the next song,
      not of the current one - using this caused breakage for the software
      volume control.
      c6714f17
    • Max Kellermann's avatar
      player: request new song only if there is no pending command · c042faab
      Max Kellermann authored
      Request the next song from the playlist (by clearing pc.next_song)
      only if the player command is empty.  If it is not, the player may be
      clearing the song that has already been queued, leading to an
      assertion failure.
      c042faab
  3. 27 Oct, 2008 1 commit
    • Max Kellermann's avatar
      player: reset pc.command when decoder startup fails · 4a71f662
      Max Kellermann authored
      When the decoder failed to start, the function do_play() returned,
      still having pc.command==PLAY.  This is because pc.command was reset
      only when the decoder started up successfully.  Add another
      player_command_finished() call in the error handler.
      4a71f662
  4. 24 Oct, 2008 1 commit
    • Max Kellermann's avatar
      player: don't clear command before do_play() returns · ee499cb4
      Max Kellermann authored
      This bug caused the audio output devices to stay open, although MPD
      wasn't playing: quitDecode() resetted player_control.command, assuming
      that the command was STOP.  This way, player_task() didn't see the
      CLOSE_AUDIO command, and the device was kept open.
      
      Don't clear player_control.command in quitDecode().
      ee499cb4
  5. 23 Oct, 2008 1 commit
  6. 21 Oct, 2008 1 commit
  7. 11 Oct, 2008 4 commits
    • Max Kellermann's avatar
      player: replaced buffered_before_play with buffering flag · 08210af2
      Max Kellermann authored
      buffered_before_play was copied to struct player because it was used
      to disable buffering when seeking.  Instead of mainaining a copy of
      this number, move just the flag to the player struct.
      08210af2
    • Max Kellermann's avatar
      player: added commands QUEUE and CANCEL · 35a939e3
      Max Kellermann authored
      QUEUE adds a new song to the player's queue.  CANCEL clears the queue.
      These two commands replace the old and complex queueState and
      queueLockState code.
      35a939e3
    • Max Kellermann's avatar
      player: added struct player · 9d51bd39
      Max Kellermann authored
      The player struct holds the local variables which used to be passed to
      all those helper functions in player_thread.c.
      9d51bd39
    • Max Kellermann's avatar
      player: removed player_control.fileTime · 42409a35
      Max Kellermann authored
      This variable is superfluous, it is only used to copy its value to
      player_control.totalTime.  Since the original source of this value
      (song->tag->time) will still be available at this point, we can safely
      remove fileTime.
      42409a35
  8. 10 Oct, 2008 3 commits
  9. 08 Oct, 2008 3 commits
  10. 29 Sep, 2008 1 commit
    • Max Kellermann's avatar
      audio_output: added method pause() · 6e21e24c
      Max Kellermann authored
      pause() puts the audio output into pause mode: if supported, it may
      perform a special action, which keeps the device open, but does not
      play anything.  Output plugins like "shout" might want to play silence
      during pause, so their clients won't be disconnected.  Plugins which
      do not support pausing will simply be closed, and have to be reopened
      when unpaused.
      
      This pach includes an implementation for the shout plugin, which
      sends silence chunks.
      6e21e24c
  11. 26 Sep, 2008 1 commit
    • Max Kellermann's avatar
      notify: protect notify->pending with the mutex · 58554e14
      Max Kellermann authored
      There was a known deadlocking bug in the notify library: when the
      other thread set notify->pending after the according check in
      notify_wait(), the latter thread was deadlocked.  Resolve this by
      synchronizing all accesses to notify->pending with the notify object's
      mutex.  Since notify_signal_sync() was never used, we can remove it.
      As a consequence, we don't need notify_enter() and notify_leave()
      anymore; eliminate them, too.
      58554e14
  12. 07 Sep, 2008 1 commit
  13. 26 Aug, 2008 17 commits