Compare commits
10 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
daba1238b5 | ||
![]() |
d125567f4a | ||
![]() |
993eca9327 | ||
![]() |
e314844a4d | ||
![]() |
017bc564af | ||
![]() |
e076ff9085 | ||
![]() |
2789493a5f | ||
![]() |
4ed0635447 | ||
![]() |
1904e504be | ||
![]() |
834715ea2f |
17
INSTALL
17
INSTALL
@@ -3,9 +3,11 @@
|
||||
|
||||
Introduction
|
||||
------------
|
||||
|
||||
This document is a very small amount of documentation about what is needed to
|
||||
install MPD. If more information is desired see the community wiki at
|
||||
http://mpd.wikia.com.
|
||||
install MPD. If more information is desired, read the user manual:
|
||||
|
||||
http://www.musicpd.org/doc/user/
|
||||
|
||||
Dependencies
|
||||
------------
|
||||
@@ -161,13 +163,9 @@ Get the latest release from of MPD from <http://www.musicpd.org/>.
|
||||
Compile
|
||||
-------
|
||||
|
||||
1) unzip and untar the archive
|
||||
1) unpack the archive
|
||||
|
||||
$ tar zxvf mpd-x.x.x.tar.gz
|
||||
|
||||
or
|
||||
|
||||
$ tar jxvf mpd-x.x.x.tar.bz2
|
||||
$ tar xf mpd-x.x.x.tar.xz
|
||||
|
||||
2) change to directory created
|
||||
|
||||
@@ -208,6 +206,5 @@ Using MPD
|
||||
---------
|
||||
|
||||
You can download many different interfaces for MPD at
|
||||
<http://mpd.wikia.com/wiki/Clients>
|
||||
|
||||
MPD can be interfaced directly using telnet (see COMMANDS, if you are brave).
|
||||
http://www.musicpd.org/clients/
|
||||
|
@@ -1,5 +1,5 @@
|
||||
ACLOCAL_AMFLAGS = -I m4
|
||||
AUTOMAKE_OPTIONS = foreign 1.11 dist-bzip2 dist-xz subdir-objects
|
||||
AUTOMAKE_OPTIONS = foreign 1.11 dist-xz subdir-objects
|
||||
|
||||
AM_CPPFLAGS += -I$(srcdir)/src $(GLIB_CFLAGS)
|
||||
|
||||
|
3
NEWS
3
NEWS
@@ -1,3 +1,6 @@
|
||||
ver 0.18.3 (2013/11/08)
|
||||
* fix stuck MPD after song change (0.18.2 regression)
|
||||
|
||||
ver 0.18.2 (2013/11/07)
|
||||
* protocol:
|
||||
- "close" flushes the output buffer
|
||||
|
@@ -1,6 +1,6 @@
|
||||
AC_PREREQ(2.60)
|
||||
|
||||
AC_INIT(mpd, 0.18.2, musicpd-dev-team@lists.sourceforge.net)
|
||||
AC_INIT(mpd, 0.18.3, musicpd-dev-team@lists.sourceforge.net)
|
||||
|
||||
VERSION_MAJOR=0
|
||||
VERSION_MINOR=18
|
||||
@@ -8,7 +8,7 @@ VERSION_REVISION=0
|
||||
VERSION_EXTRA=0
|
||||
|
||||
AC_CONFIG_SRCDIR([src/Main.cxx])
|
||||
AM_INIT_AUTOMAKE([foreign 1.11 dist-bzip2 dist-xz subdir-objects])
|
||||
AM_INIT_AUTOMAKE([foreign 1.11 dist-xz subdir-objects])
|
||||
AM_SILENT_RULES
|
||||
AC_CONFIG_HEADERS(config.h)
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
|
@@ -68,12 +68,28 @@ foo(const char *abc, int xyz)
|
||||
<chapter>
|
||||
<title>Hacking The Source</title>
|
||||
|
||||
<para>
|
||||
MPD sources are managed in a git repository on <ulink
|
||||
url="http://git.musicpd.org/">git.musicpd.org</ulink>.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Always write your code against the latest git:
|
||||
</para>
|
||||
|
||||
<programlisting>git clone git://git.musicpd.org/master/mpd.git</programlisting>
|
||||
|
||||
<para>
|
||||
If you already have a clone, update it:
|
||||
</para>
|
||||
|
||||
<programlisting>git pull --rebase git://git.musicpd.org/master/mpd.git master</programlisting>
|
||||
|
||||
<para>
|
||||
You can do without "--rebase", but we recommend that you rebase
|
||||
your repository on the "master" repository all the time.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Configure with the options <option>--enable-debug
|
||||
--enable-werror</option>. Enable as many plugins as possible,
|
||||
@@ -83,8 +99,55 @@ foo(const char *abc, int xyz)
|
||||
<para>
|
||||
Don't mix several changes in one single patch. Create a
|
||||
separate patch for every change. Tools like
|
||||
<application>stgit</application> help you with that.
|
||||
<application>stgit</application> help you with that. This way,
|
||||
we can review your patches more easily, and we can pick the
|
||||
patches we like most first.
|
||||
</para>
|
||||
|
||||
|
||||
<section>
|
||||
<title> Basic stgit usage</title>
|
||||
|
||||
<para>
|
||||
stgit allows you to create a set of patches and refine all of
|
||||
them: you can go back to any patch at any time, and re-edit it
|
||||
(both the code and the commit message). You can reorder
|
||||
patches and insert new patches at any position. It encourages
|
||||
creating separate patches for tiny changes.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
stgit needs to be initialized on a git repository: stg init
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Before you edit the code, create a patch: stg new
|
||||
my-patch-name (stgit now asks you for the commit message).
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Now edit the code. Once you're finished, you have to "refresh"
|
||||
the patch, i.e. your edits are incorporated into the patch you
|
||||
have created: stg refresh
|
||||
</para>
|
||||
|
||||
<para>
|
||||
You may now continue editing the same patch, and refresh it as
|
||||
often as you like. Create more patches, edit and refresh them.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
To view the list of patches, type stg series. To go back to a
|
||||
specific patch, type stg goto my-patch-name; now you can
|
||||
re-edit it (don't forget stg refresh when you're finished with
|
||||
that patch).
|
||||
</para>
|
||||
|
||||
<para>
|
||||
When the whole patch series is finished, convert stgit patches
|
||||
to git commits: stg commit
|
||||
</para>
|
||||
</section>
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
|
@@ -1,5 +1,5 @@
|
||||
# An example configuration file for MPD
|
||||
# See the mpd.conf man page for a more detailed description of each parameter.
|
||||
# An example configuration file for MPD.
|
||||
# Read the user manual for documentation: http://www.musicpd.org/doc/user/
|
||||
|
||||
|
||||
# Files and directories #######################################################
|
||||
@@ -204,9 +204,6 @@ input {
|
||||
# blocks. Setting this block is optional, though the server will only attempt
|
||||
# autodetection for one sound card.
|
||||
#
|
||||
# See <http://mpd.wikia.com/wiki/Configuration#Audio_Outputs> for examples of
|
||||
# other audio outputs.
|
||||
#
|
||||
# An example of an ALSA output:
|
||||
#
|
||||
#audio_output {
|
||||
|
@@ -67,11 +67,11 @@
|
||||
|
||||
<para>
|
||||
Download the source tarball from <ulink
|
||||
url="http://mpd.wikia.com/wiki/Server">the MPD home
|
||||
url="http://www.musicpd.org/download.html">the MPD home
|
||||
page</ulink> and unpack it:
|
||||
</para>
|
||||
|
||||
<programlisting>tar xjf mpd-version.tar.bz
|
||||
<programlisting>tar xf mpd-version.tar.xz
|
||||
cd mpd-version</programlisting>
|
||||
|
||||
<para>
|
||||
@@ -630,7 +630,7 @@ systemctl start mpd.socket</programlisting>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The <ulink url="http://mpd.wikia.com/wiki/Clients">MPD
|
||||
The <ulink url="http://www.musicpd.org/clients/">MPD
|
||||
Wiki</ulink> contains an extensive list of clients to choose
|
||||
from.
|
||||
</para>
|
||||
|
@@ -283,11 +283,11 @@ decoder_read(Decoder *decoder,
|
||||
assert(nbytes == 0 || !error.IsDefined());
|
||||
assert(nbytes > 0 || error.IsDefined() || is.IsEOF());
|
||||
|
||||
is.Unlock();
|
||||
|
||||
if (gcc_unlikely(nbytes == 0 && error.IsDefined()))
|
||||
LogError(error);
|
||||
|
||||
is.Unlock();
|
||||
|
||||
return nbytes;
|
||||
}
|
||||
|
||||
|
@@ -42,20 +42,12 @@ Decoder::~Decoder()
|
||||
* one.
|
||||
*/
|
||||
static DecoderCommand
|
||||
need_chunks(DecoderControl &dc, bool do_wait)
|
||||
need_chunks(DecoderControl &dc)
|
||||
{
|
||||
if (dc.command == DecoderCommand::STOP ||
|
||||
dc.command == DecoderCommand::SEEK)
|
||||
return dc.command;
|
||||
|
||||
if (do_wait) {
|
||||
if (dc.command == DecoderCommand::NONE)
|
||||
dc.Wait();
|
||||
dc.client_cond.signal();
|
||||
|
||||
return dc.command;
|
||||
}
|
||||
|
||||
return DecoderCommand::NONE;
|
||||
return dc.command;
|
||||
}
|
||||
|
||||
struct music_chunk *
|
||||
@@ -80,7 +72,7 @@ decoder_get_chunk(Decoder &decoder)
|
||||
}
|
||||
|
||||
dc.Lock();
|
||||
cmd = need_chunks(dc, true);
|
||||
cmd = need_chunks(dc);
|
||||
dc.Unlock();
|
||||
} while (cmd == DecoderCommand::NONE);
|
||||
|
||||
|
@@ -36,8 +36,6 @@
|
||||
#include "util/Domain.hxx"
|
||||
#include "Log.hxx"
|
||||
|
||||
#include <glib.h>
|
||||
|
||||
#include <string.h>
|
||||
|
||||
static constexpr Domain player_domain("player");
|
||||
@@ -1043,8 +1041,14 @@ Player::Run()
|
||||
output thread is still busy, so it's
|
||||
okay */
|
||||
|
||||
/* XXX synchronize in a better way */
|
||||
g_usleep(10000);
|
||||
pc.Lock();
|
||||
|
||||
/* wake up the decoder (just in case it's
|
||||
waiting for space in the MusicBuffer) and
|
||||
wait for it */
|
||||
dc.Signal();
|
||||
dc.WaitForDecoder();
|
||||
continue;
|
||||
} else if (IsDecoderAtNextSong()) {
|
||||
/* at the beginning of a new song */
|
||||
|
||||
|
Reference in New Issue
Block a user