Merge branch 'v0.19.x'

This commit is contained in:
Max Kellermann 2014-11-07 19:41:19 +01:00
commit 2d9876a261
9 changed files with 68 additions and 5 deletions

View File

@ -1112,6 +1112,7 @@ endif
# #
libinput_a_SOURCES = \ libinput_a_SOURCES = \
src/input/Domain.cxx src/input/Domain.hxx \
src/input/Init.cxx src/input/Init.hxx \ src/input/Init.cxx src/input/Init.hxx \
src/input/Registry.cxx src/input/Registry.hxx \ src/input/Registry.cxx src/input/Registry.hxx \
src/input/Open.cxx \ src/input/Open.cxx \

7
NEWS
View File

@ -4,6 +4,13 @@ ver 0.20 (not yet released)
* output * output
- pulse: set channel map to WAVE-EX - pulse: set channel map to WAVE-EX
ver 0.19.3 (not yet released)
* database
- upnp: fix breakage due to malformed URIs
* decoder
- audiofile: fix crash while playing streams
- ffmpeg: support opus
ver 0.19.2 (2014/11/02) ver 0.19.2 (2014/11/02)
* input * input
- curl: fix redirected streams - curl: fix redirected streams

View File

@ -129,6 +129,7 @@ public:
state(NONE), state(NONE),
tag_type(TAG_NUM_OF_ITEM_TYPES) tag_type(TAG_NUM_OF_ITEM_TYPES)
{ {
m_tobj.clear();
} }
protected: protected:

View File

@ -657,7 +657,7 @@ static const char *const ffmpeg_suffixes[] = {
"mj2", "mjpeg", "mjpg", "mka", "mkv", "mlp", "mm", "mmf", "mov", "mp+", "mj2", "mjpeg", "mjpg", "mka", "mkv", "mlp", "mm", "mmf", "mov", "mp+",
"mp1", "mp2", "mp3", "mp4", "mpc", "mpeg", "mpg", "mpga", "mpp", "mpu", "mp1", "mp2", "mp3", "mp4", "mpc", "mpeg", "mpg", "mpga", "mpp", "mpu",
"mve", "mvi", "mxf", "nc", "nsv", "nut", "nuv", "oga", "ogm", "ogv", "mve", "mvi", "mxf", "nc", "nsv", "nut", "nuv", "oga", "ogm", "ogv",
"ogx", "oma", "ogg", "omg", "psp", "pva", "qcp", "qt", "r3d", "ra", "ogx", "oma", "ogg", "omg", "opus", "psp", "pva", "qcp", "qt", "r3d", "ra",
"ram", "rl2", "rm", "rmvb", "roq", "rpl", "rvc", "shn", "smk", "snd", "ram", "rl2", "rm", "rmvb", "roq", "rpl", "rvc", "shn", "smk", "snd",
"sol", "son", "spx", "str", "swf", "tgi", "tgq", "tgv", "thp", "ts", "sol", "son", "spx", "str", "swf", "tgi", "tgq", "tgv", "thp", "ts",
"tsp", "tta", "xa", "xvid", "uv", "uv2", "vb", "vid", "vob", "voc", "tsp", "tta", "xa", "xvid", "uv", "uv2", "vb", "vid", "vob", "voc",
@ -691,6 +691,7 @@ static const char *const ffmpeg_mime_types[] = {
"audio/mpeg", "audio/mpeg",
"audio/musepack", "audio/musepack",
"audio/ogg", "audio/ogg",
"audio/opus",
"audio/qcelp", "audio/qcelp",
"audio/vorbis", "audio/vorbis",
"audio/vorbis+ogg", "audio/vorbis+ogg",

View File

@ -19,6 +19,7 @@
#include "config.h" #include "config.h"
#include "AsyncInputStream.hxx" #include "AsyncInputStream.hxx"
#include "Domain.hxx"
#include "tag/Tag.hxx" #include "tag/Tag.hxx"
#include "event/Call.hxx" #include "event/Call.hxx"
#include "thread/Cond.hxx" #include "thread/Cond.hxx"
@ -113,8 +114,10 @@ AsyncInputStream::Seek(offset_type new_offset, Error &error)
/* no-op */ /* no-op */
return true; return true;
if (!IsSeekable()) if (!IsSeekable()) {
error.Set(input_domain, "Not seekable");
return false; return false;
}
/* check if we can fast-forward the buffer */ /* check if we can fast-forward the buffer */

24
src/input/Domain.cxx Normal file
View File

@ -0,0 +1,24 @@
/*
* Copyright (C) 2003-2014 The Music Player Daemon Project
* http://www.musicpd.org
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#include "config.h"
#include "Domain.hxx"
#include "util/Domain.hxx"
const Domain input_domain("input");

27
src/input/Domain.hxx Normal file
View File

@ -0,0 +1,27 @@
/*
* Copyright (C) 2003-2014 The Music Player Daemon Project
* http://www.musicpd.org
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#ifndef MPD_INPUT_DOMAIN_HXX
#define MPD_INPUT_DOMAIN_HXX
class Domain;
extern const Domain input_domain;
#endif

View File

@ -22,14 +22,13 @@
#include "Registry.hxx" #include "Registry.hxx"
#include "InputPlugin.hxx" #include "InputPlugin.hxx"
#include "LocalOpen.hxx" #include "LocalOpen.hxx"
#include "Domain.hxx"
#include "plugins/RewindInputPlugin.hxx" #include "plugins/RewindInputPlugin.hxx"
#include "fs/Traits.hxx" #include "fs/Traits.hxx"
#include "fs/Path.hxx" #include "fs/Path.hxx"
#include "util/Error.hxx" #include "util/Error.hxx"
#include "util/Domain.hxx" #include "util/Domain.hxx"
static constexpr Domain input_domain("input");
InputStream * InputStream *
InputStream::Open(const char *url, InputStream::Open(const char *url,
Mutex &mutex, Cond &cond, Mutex &mutex, Cond &cond,

View File

@ -29,7 +29,7 @@
ContentDirectoryService::ContentDirectoryService(const UPnPDevice &device, ContentDirectoryService::ContentDirectoryService(const UPnPDevice &device,
const UPnPService &service) const UPnPService &service)
:m_actionURL(uri_apply_base(device.URLBase, service.controlURL)), :m_actionURL(uri_apply_base(service.controlURL, device.URLBase)),
m_serviceType(service.serviceType), m_serviceType(service.serviceType),
m_deviceId(device.UDN), m_deviceId(device.UDN),
m_friendlyName(device.friendlyName), m_friendlyName(device.friendlyName),