1. 03 Jan, 2017 1 commit
  2. 05 Mar, 2016 1 commit
  3. 26 Feb, 2016 1 commit
  4. 03 Mar, 2015 1 commit
  5. 01 Jan, 2015 1 commit
  6. 12 Feb, 2014 1 commit
  7. 09 Feb, 2014 1 commit
  8. 25 Jan, 2014 1 commit
    • Max Kellermann's avatar
      neighbor: new subsystem to detect file servers on the local network · 5c4a42ca
      Max Kellermann authored
      This commit adds the NeighborPlugin API which can be used to detect
      nearby file servers that can be used by input plugins.  This list of
      servers is exported using the new "listneighbors" command.  The idle
      even "neighbor" notifies interested clients when a new neighbor is
      found or an existing one is lost.
      
      There's a lot missing currently: protocol&user documentation, and a
      way to "mount" remote servers into the music database.  Obviously,
      some code from the UPnP database plugin can be moved to a neighbor
      plugin.
      5c4a42ca
  9. 13 Jan, 2014 1 commit
  10. 20 Oct, 2013 1 commit
  11. 08 Apr, 2013 1 commit
  12. 16 Jan, 2013 1 commit
  13. 09 Jan, 2013 1 commit
  14. 29 Jan, 2011 2 commits
  15. 01 Jan, 2010 1 commit
  16. 05 Jul, 2009 1 commit
    • Max Kellermann's avatar
      idle: added "update" event · d4914fc9
      Max Kellermann authored
      Some clients have visual feedback for "database update is running".
      Using the "database" idle event is unreliable, because it is only
      emitted when the database was actually modified.  This patch adds the
      "update" event, which is emitted when the update is started, and again
      when the update is finished, disregarding whether it has been
      modified.
      d4914fc9
  17. 13 Mar, 2009 1 commit
    • Avuton Olrich's avatar
      all: Update copyright header. · 0aee49bd
      Avuton Olrich authored
      This updates the copyright header to all be the same, which is
      pretty much an update of where to mail request for a copy of the GPL
      and the years of the MPD project. This also puts all committers under
      'The Music Player Project' umbrella. These entries should go
      individually in the AUTHORS file, for consistancy.
      0aee49bd
  18. 25 Jan, 2009 1 commit
  19. 28 Dec, 2008 1 commit
  20. 22 Nov, 2008 1 commit
  21. 14 Oct, 2008 1 commit
    • Max Kellermann's avatar
      command: added command "idle" · a3e3d2c9
      Max Kellermann authored
      "idle" waits until something noteworthy happens on the server,
      e.g. song change, playlist modified, database updated.  This allows
      clients to keep up to date without polling.
      a3e3d2c9
  22. 08 Oct, 2008 3 commits
  23. 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
  24. 24 Sep, 2008 4 commits
  25. 01 Jun, 2008 1 commit
  26. 12 Apr, 2008 2 commits
  27. 26 Mar, 2008 3 commits
    • Eric Wong's avatar
      notify: more cleanups, add error checking for pipe errors · 53be85e1
      Eric Wong authored
      Don't bother initializing the junk buffer, we really don't care.
      The array was also unnecessary and ugly.
      
      Also, avoid returning the byte count we read/wrote since it
      unnecessarily exposes internal details of the implementation to
      the callers.
      
      git-svn-id: https://svn.musicpd.org/mpd/trunk@7219 09075e82-0dd4-0310-85a5-a0d7c8717e4f
      53be85e1
    • Eric Wong's avatar
      notify: cleanups · 232c9f6c
      Eric Wong authored
      * move set_nonblock{,ing}() into utils.c since we use it
      elsewhere, too
      * add proper error checking to set_nonblocking()
      * use os_compat.h instead of individually #includ-ing system headers
      
      git-svn-id: https://svn.musicpd.org/mpd/trunk@7217 09075e82-0dd4-0310-85a5-a0d7c8717e4f
      232c9f6c
    • Max Kellermann's avatar
      notify the decoder instead of polling 100hz · bf05ce16
      Max Kellermann authored
      When the decoder process is faster than the player process, all
      decodedd buffers are full at some point in time.  The decoder has to
      wait for buffers to become free (finished playing).  It used to do
      this by polling the buffer status 100 times a second.
      
      This generates a lot of unnecessary CPU wakeups.  This patch adds a
      way for the player process to notify the decoder process that it may
      continue its work.
      
      We could use pthread_cond for that, unfortunately inter-process
      mutexes/conds are not supported by some kernels (Linux), so we cannot
      use this light-weight method until mpd moves to using threads instead
      of processes.  The other method would be semaphores, which
      historically are global resources with a unique name; this historic
      API is cumbersome, and I wanted to avoid it.
      
      I came up with a quite naive solution for now: I create an anonymous
      pipe with pipe(), and the decoder process reads on that pipe.  Until
      the player process sends data on it as a signal, the decoder process
      blocks.
      
      This can be optimized in a number of ways:
      
      - if the decoder process is still working (instead of waiting for
      buffers), we could save the write() system call, since there is
      nobody waiting for the notification.
      [ew: I tried this using a counter in shared memory, didn't help]
      
      - the pipe buffer will be full at some point, when the decoder thread
      is too slow.  For this reason, the writer side of the pipe is
      non-blocking, and mpd can ignore the resulting EWOULDBLOCK.
      
      - since we have shared memory, we could check whether somebody is
      actually waiting without a context switch, and we could just not
      write the notification byte.
      [ew: tried same method/result as first point above]
      
      - if there is already a notification in the pipe, we could also not
      write another one.
      [ew: tried same method/result as first/third points above]
      
      - the decoder will only consume 64 bytes at a time.  If the pipe
      buffer is full, this will result in a lot of read() invocations.
      This does not hurt badly, but on a heavily loaded system, this might
      add a little bit more load.  The preceding optimizations however
      are able eliminate the this.
      
      - finally, we should use another method for inter process
      notifications - maybe kill() or just make mpd use threads, finally.
      
      In spite of all these possibilities to optimize this code further,
      this pipe notification trick is faster than the 100 Hz poll.  On my
      machine, it reduced the number of wakeups to less than 30%.
      
      git-svn-id: https://svn.musicpd.org/mpd/trunk@7215 09075e82-0dd4-0310-85a5-a0d7c8717e4f
      bf05ce16
  28. 05 Apr, 2007 1 commit
  29. 06 Oct, 2006 2 commits
  30. 06 Aug, 2006 1 commit