Max Kellermann
eaa1590866
GlobalEvents: eliminate SHUTDOWN, use Instance::Shutdown() instead
2016-03-05 18:56:27 +01:00
Max Kellermann
071af004bd
GlobalEvents: include cleanup
2016-03-05 18:56:27 +01:00
Max Kellermann
23ab4e5e5f
Instance: add method Shutdown()
2016-03-05 18:56:16 +01:00
Max Kellermann
8e563cbccd
Instance: use C++11 initializers
2016-03-05 18:55:57 +01:00
Max Kellermann
1aee89f5ea
*: include cleanup (using iwyu)
2016-03-01 22:08:13 +01:00
Max Kellermann
d2dd6f7c70
thread/Posix{Mutex,Cond}: use "constexpr" only with glibc
...
Apparently all other C libraries are not compatible with "constexpr".
Those which are not will get a performance penalty, but at least they
work at all.
2016-03-01 21:23:59 +01:00
Max Kellermann
fb547260d1
player/Control: Play*() returns Error information
2016-02-28 13:31:41 +01:00
Max Kellermann
2065e32904
queue/PlaylistControl: clear "queued" before calling LockSeek()
...
This is necessary to avoid an assertion failure in UpdateQueuedSong()
after LockSeek() has failed.
2016-02-28 13:19:44 +01:00
Max Kellermann
ac15581c56
command/error: remove unused function print_playlist_result()
2016-02-28 11:53:38 +01:00
Max Kellermann
9e2e882157
PlaylistPrint: throw PlaylistError on error
2016-02-28 11:52:39 +01:00
Max Kellermann
99ded56047
command/error: remove db_domain from ToAck(Error)
2016-02-28 11:48:12 +01:00
Max Kellermann
65386f52f0
db/proxy: throw DatabaseError on error
2016-02-28 11:47:03 +01:00
Max Kellermann
5b8dce7456
db/simple: throw DatabaseError on error
2016-02-28 11:40:59 +01:00
Max Kellermann
de938eb621
db/simple: handle exception in Open() properly, fix memory leak
2016-02-28 11:40:39 +01:00
Max Kellermann
83cc6c0835
db/simple: use second Error instance in Open()
...
Don't need to clear the caller-specified one.
2016-02-28 11:38:22 +01:00
Max Kellermann
304d78a4c8
command/error: remove playlist_domain from ToAck(Error)
...
playlist_domain is no longer used for class Error.
2016-02-28 11:17:43 +01:00
Max Kellermann
347590751c
SongLoader: throw PlaylistError on error
2016-02-28 11:15:20 +01:00
Max Kellermann
fe4b1f96f1
SongLoader: use temporary stack variable, no heap allocation
...
Improved exception-safety.
2016-02-28 11:08:00 +01:00
Max Kellermann
9de984f7f8
queue/PlaylistControl: throw PlaylistError on error
2016-02-28 11:04:35 +01:00
Max Kellermann
b6cb9b853a
queue/PlaylistEdit: throw PlaylistError on error
2016-02-28 11:02:36 +01:00
Max Kellermann
50b930f283
playlist/edit: use std::unique_ptr
2016-02-28 11:00:59 +01:00
Max Kellermann
cbeb809798
playlist/queue: use std::unique_ptr
2016-02-28 10:58:50 +01:00
Max Kellermann
ea626368a0
queue/QueueCommands: use std::unique_ptr
2016-02-28 10:56:37 +01:00
Max Kellermann
c81747dd15
queue/PlaylistTag: throw PlaylistError on error
2016-02-28 10:40:31 +01:00
Max Kellermann
f8810d7caf
PlaylistError: add NotPlaying()
2016-02-28 10:38:17 +01:00
Max Kellermann
92f54f0b59
output/alsa: disable DoP if it fails
...
See http://bugs.musicpd.org/view.php?id=4496
2016-02-28 10:19:19 +01:00
Max Kellermann
ddce544b53
output/alsa: move the PcmExport::Open() call to Open()
2016-02-28 10:15:54 +01:00
Max Kellermann
21fb7eea82
output/alsa: probe DSD_U32 if DSD_U8 fails
...
See http://bugs.musicpd.org/view.php?id=4485
2016-02-28 09:59:09 +01:00
Max Kellermann
fd7eb43366
output/alsa: use CamelCase
2016-02-28 09:44:15 +01:00
Max Kellermann
a1add27c4c
output/alsa: fix indent
2016-02-28 09:35:57 +01:00
Max Kellermann
fc8194ee1e
output/alsa: fix typo
2016-02-28 09:35:55 +01:00
Max Kellermann
8ffcdb73e8
output/alsa: remove option "use_mmap"
...
MPD does not really take advantage of memory-mapped I/O by generating
data right into the ALSA buffer; using plain snd_pcm_mmap_writei() has
no advantage compared to snd_pcm_writei(). Let's kill this
non-feature.
2016-02-28 09:30:59 +01:00
Max Kellermann
111528e51c
output/alsa: add #ifdef ENABLE_DSD
...
Fixes the --disable-dsd build.
See http://bugs.musicpd.org/view.php?id=4498
2016-02-28 07:29:37 +01:00
Max Kellermann
5628dcf47e
pcm/export: add #ifdef ENABLE_DSD to struct Params
2016-02-27 08:02:01 +01:00
Max Kellermann
fb4f02cd38
pcm/PcmExport: add flag to export to DSD_U32
2016-02-27 07:42:09 +01:00
Max Kellermann
d1be643c0d
pcm/PcmDsd: add converter from DSD_U8 to DSD_U32
2016-02-27 07:41:58 +01:00
Max Kellermann
c9761bf6af
output/alsa: pass PcmExport::Params to alsa_setup()
2016-02-27 07:35:35 +01:00
Max Kellermann
4a47265224
output/alsa: pass PcmExport::Params to SetupDop()
2016-02-27 07:34:58 +01:00
Max Kellermann
f0f3017a76
pcm/export: move Open() parameters to struct Params
2016-02-26 18:55:27 +01:00
Max Kellermann
d3f0b62348
pcm/export: another #ifdef ENABLE_DSD fix
2016-02-26 18:55:06 +01:00
Max Kellermann
6a53fb33da
output/alsa: basic infrastructure for DSD_U16 and DSD_U32
2016-02-26 18:44:58 +01:00
Max Kellermann
dcaf299864
pcm/export: add #ifdef ENABLE_DSD
2016-02-26 18:44:23 +01:00
Max Kellermann
1d67aa7bf2
update copyright year to 2016
2016-02-26 17:54:05 +01:00
Max Kellermann
e56066f721
pcm/dsd: use PcmBuffer::GetT()
2016-02-26 17:41:18 +01:00
Max Kellermann
5e3844ac13
pcm/dsd: use MAX_CHANNELS
2016-02-26 17:41:06 +01:00
Max Kellermann
cb4f5d454b
pcm/dsd: use std::array
2016-02-26 17:38:46 +01:00
Max Kellermann
e5c6fe1bb2
player/control: unpause in Play()
...
Fix regression by commit 45f6129a
See http://bugs.musicpd.org/view.php?id=4477
2016-02-26 17:33:21 +01:00
Max Kellermann
bf65a9732c
decoder/thread: clear Decoder::error before attempting another plugin
...
Keep only the last error. This fixes bogus aborts due to the error
check in decoder_get_virtual_command().
2016-02-26 17:30:24 +01:00
Max Kellermann
1388b3219a
decoder/thread: fix typo in comment
2016-02-26 16:48:27 +01:00
Max Kellermann
d9e8ce22cb
util/Error: use std::exception_ptr instead of std::exception
...
Necessary to preserve type information. The try/catch sequence didn't
work previously.
Same fix as in commit 1c904000
2016-02-26 16:32:24 +01:00
Max Kellermann
224944528f
TagArchive: include cleanup
2016-02-26 15:10:33 +01:00
Max Kellermann
cdcd3e77b3
TagArchive: refactor TagHandler overload to use ArchiveFile
2016-02-26 15:07:30 +01:00
Max Kellermann
ed5058a363
TagArchive: remove obsolete overload
2016-02-26 15:07:00 +01:00
Max Kellermann
a670ff6d3e
SongUpdate: remove obsolete overload UpdateFileInArchive(Storage)
2016-02-26 15:06:16 +01:00
Max Kellermann
32f6d34904
db/update/Archive: rescan tags on existing songs in archive
...
This is the final piece for full ID3/APE support in archives.
2016-02-26 15:05:49 +01:00
Max Kellermann
d3ae05506d
SongUpdate: remove archive handling from LoadFile()
...
This code has been moved to LoadFromArchive().
2016-02-26 15:05:44 +01:00
Max Kellermann
96f4394dce
db/update/Archive: pass ArchiveFile to Song constructor
...
Don't open the ZIP file again and again for each song file.
2016-02-26 15:05:40 +01:00
Max Kellermann
35567e6507
SongUpdate: add UpdateFileInArchive(ArchiveFile&)
2016-02-26 14:53:37 +01:00
Max Kellermann
ae37e25452
TagArchive: add overload with ArchiveFile&
2016-02-26 14:46:01 +01:00
Max Kellermann
c4537fe6f6
TagArchive: add TagBuilder overload with ScanGenericTags() fallback
...
Load APE/ID3 tags from archives.
2016-02-26 14:03:16 +01:00
Max Kellermann
677334f5a9
tag/TagId3: re-add missing tag_id3_load()==nullptr check
2016-02-26 14:00:30 +01:00
Max Kellermann
3d9652ae35
TagStream: add TagBuilder overload with ScanGenericTags() fallback
...
This commit adds support for APE/ID3 tags from NFS/SMB files.
See http://bugs.musicpd.org/view.php?id=4270
2016-02-26 13:48:38 +01:00
Max Kellermann
a9130cb99c
TagFile: add TagBuilder overload with ScanGenericTags() fallback
2016-02-26 13:48:38 +01:00
Max Kellermann
b1d60b5c85
TagArchive: use InputStreamPtr
2016-02-26 13:48:38 +01:00
Max Kellermann
99a05c56ad
tag/Generic: use InputStream::LockRewind() instead of Rewind()
...
Fixes deadlock.
2016-02-26 13:48:38 +01:00
Max Kellermann
cfc65397b3
tag/Generic: clarify documentation on InputStream overload
2016-02-24 00:01:51 +01:00
Max Kellermann
cd8fd1ef42
tag/Generic: remove redundant documentation
2016-02-24 00:01:30 +01:00
Max Kellermann
6350089e51
release v0.19.13
...
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
iQIcBAABCAAGBQJWzMnGAAoJECNuiljG20US5yYP/jL9A313aMgUO/R8eVGNc7uJ
CwiKROtgd+M47si1qdduzdrPKrFK2tEGYT0El5uQsyDuIsmPB01c3ZqnlM8oO6ca
5tXXJiEvyMkupCEzAajTHqvDCyPx0+o1ektYm9SouAULjOMztIpsVU3oKc8Z78Yc
TkpaRwUjNaekGLf0kATesBYnWkKR7S/TLYKmaKUaPCcK/i2S8YhTC57a1yZjg3lE
w57Kh+tFLZCSiZChk9A5D6w1kKzDgiyNGRYK4F2TRfiQ6hML4F45EFgzfCg+zHi8
+OIE9C1ZQt/NQ6mib+OUWoGuHtfjR20F/OFnQEYvkyXQ32j1sbALe7IHCceX7IHl
U88hcIh2yEr1x3TUaVyYPLze4FBq/Uxv/gFH8FVKTWmcb90MJgXCNFbO3sfO9kk0
KYK0IDoHE9MSmWhblA1FFFHU8VmCMsTN0VhBan+XP2wgXnGX+UvjU7AWJm4Fkwx0
H8uP0Si5wtI9DZ+2SRyGhMfW/+pHsqD+O6PoSSfUyU3ZnPy+cAVEC+67oKJ9pZkA
najeYaMt0Kz88RvLEwNeLkiys62O8aTsBpfjeNfmUAISJzZZbIvC20tyroHrju30
TgbXff2Hnx4q+NQ7nbQN5HMVZ2JLLPMYYw+N0dP41g/ULubHS6btGOVwgTWoFwBo
i2L1uscoD1ONxIEOlIvl
=X7s3
-----END PGP SIGNATURE-----
Merge tag 'v0.19.13'
release v0.19.13
2016-02-23 22:13:43 +01:00
Max Kellermann
39fa949345
queue/Playlist: move only the tag items in TagModified()
...
Fixes disappearing duration of remote songs during playback.
See http://bugs.musicpd.org/view.php?id=4492
2016-02-23 21:01:55 +01:00
Max Kellermann
e1d7a5cbf5
DetachedSong: add method MoveTagItemsFrom()
2016-02-23 20:59:44 +01:00
Max Kellermann
f3cefaf043
tag/Tag: move code to MoveItemsFrom()
2016-02-23 20:57:56 +01:00
Max Kellermann
b3460f3f54
configure.ac, unix/Daemon: check for initgroups() at configure time
...
The initgroups() manpage says we need to check for _BSD_SOURCE. The
thing is that glibc deprecated this macro, and doesn't define it
anymore, effectively breaking all MPD supplementary groups.
The real fix is to check for initgroups() availability at configure
time, instead of relying on the deprecated _BSD_SOURCE macro.
2016-02-23 20:13:34 +01:00
Max Kellermann
8e5a67ed9f
tag/TagId3: eliminate dummy function when libid3tag is disabled
2016-02-23 11:16:19 +01:00
Max Kellermann
cccbcf510a
tag/{Id3,Ape}: remove Path overloads
2016-02-23 11:14:27 +01:00
Max Kellermann
a1e680fec7
decoder/thread: open InputStream in decoder_run_file() in any case
...
decoder_load_replay_gain() will create the InputStream anyway, so
we're not saving any overhead by opening the InputStream on demand
only.
2016-02-23 11:14:12 +01:00
Max Kellermann
1b58bd64ff
decoder/thread: use typedef InputStreamPtr
2016-02-23 11:14:11 +01:00
Max Kellermann
196de8c758
decoder/thread: load APE replay gain from remote files
2016-02-23 10:57:03 +01:00
Max Kellermann
222b777552
tag/ApeReplayGain: add overload with InputStream& parameter
2016-02-23 10:42:41 +01:00
Max Kellermann
b5c206d3ae
tag/Generic: use common InputStream for APE and ID3
2016-02-23 10:27:31 +01:00
Max Kellermann
17ace95268
tag/Generic: add overload with InputStream& parameter
2016-02-23 10:18:07 +01:00
Max Kellermann
779d73f94b
tag/TagId3: add overload with InputStream& parameter
2016-02-23 10:15:38 +01:00
Max Kellermann
73307bf2e7
tag/TagHandler: pass by reference
2016-02-23 10:10:13 +01:00
Max Kellermann
7623c1c5cb
SongUpdate: move tag_scan_fallback() to tag/Generic.cxx
2016-02-22 18:00:49 +01:00
Max Kellermann
de568c84c2
tag/ApeLoader: use CamelCase
2016-02-22 17:53:06 +01:00
Max Kellermann
1f5b9c6185
tag/ApeLoader: use std::unique_ptr
2016-02-22 17:50:15 +01:00
Max Kellermann
a5f8fd774d
tag/handler: use CamelCase
2016-02-22 17:38:06 +01:00
Max Kellermann
cc5443c38e
tag/ApeLoader: use class InputStream instead of FILE*
...
Prepare for APE tag support on userspace NFS/SMB/CIFS mounts.
2016-02-22 17:30:36 +01:00
Max Kellermann
8a86460b8f
tag/Id3Load: use class InputStream instead of FILE*
...
Prepare for ID3 support on userspace NFS/SMB/CIFS mounts.
2016-02-22 17:30:36 +01:00
Max Kellermann
7ae9e49f51
playlist/Stream, db/upnp: add missing includes
2016-02-22 17:30:36 +01:00
Max Kellermann
c682d087d9
tag/Id3Load: optimized ID3v1 loader
...
Use a 128 byte buffer instead of reading 10 bytes first and then 118.
2016-02-22 13:14:38 +01:00
Max Kellermann
57da5c0841
tag/Id3Load: simplify end offset calculation
2016-02-22 13:14:37 +01:00
Max Kellermann
a224722ae2
tag/Id3Load: add constant ID3V1_SIZE
2016-02-22 13:14:36 +01:00
Max Kellermann
283ef5b163
tag/Id3Load: use ID3_TAG_QUERYSIZE instead of integer literal
2016-02-22 13:14:35 +01:00
Max Kellermann
09a188bfd9
input/InputStream: add method Skip()
2016-02-22 13:14:19 +01:00
Max Kellermann
10f086854b
tag/Id3Load: remove unnecessary seek
2016-02-21 13:34:16 +01:00
Max Kellermann
d67c6c37e3
archive/bzip2: remove HAVE_OLDER_BZIP2 check
...
The check was added in commit 98fd9b7d
, but there was never a
definition.
2016-02-21 13:19:00 +01:00
Max Kellermann
136725dfb1
archive/bzip2: convert struct to class
2016-02-21 13:18:25 +01:00
Max Kellermann
438895842c
archive/bzip2: move bz2_fillbuffer into struct Bzip2InputStream
2016-02-21 13:17:22 +01:00
Max Kellermann
82b8f4f1ce
archive/bzip2: use C++11 initializer
2016-02-21 13:16:27 +01:00
Max Kellermann
0705f42cf8
playlist/Plugin: pass InputStreamPtr&& to open_stream()
...
Obsolete class CloseSongEnumerator, which was a kludge.
2016-02-21 12:53:47 +01:00
Max Kellermann
cadc67ea40
input: wrap InputStream in std::unique_ptr
2016-02-21 08:03:32 +01:00
Max Kellermann
054e9ecaae
tag/Id3Load: split tag_id3_read()
2016-02-21 07:14:04 +01:00
Max Kellermann
84fe3bfa87
tag/Id3Load: don't seek twice in tag_id3_read()
...
Copy the query buffer to the allocated buffer, and read only the
remaining data.
2016-02-19 19:43:05 +01:00
Max Kellermann
2ef8403bfa
tag/Id3Load: don't read again if we already have enough data
2016-02-19 19:40:23 +01:00
Max Kellermann
1d3b2baee7
tag/Id3Load: manage id3_tag* with std::unique_ptr
2016-02-19 19:16:40 +01:00
Max Kellermann
86de876b24
tag/TagId3: move tag_id3_load() to Id3Load.cxx
2016-02-19 19:06:06 +01:00
Max Kellermann
8a9f04f7fe
tag/Id3: catch exceptions
2016-02-19 18:23:54 +01:00
Max Kellermann
98bd4dfe04
fs/io/FileReader: add method Skip()
2016-02-19 18:18:25 +01:00
Max Kellermann
8e0e4d7c04
system/FileDescriptor: add method Skip()
2016-02-19 18:18:12 +01:00
Max Kellermann
a5e8269c72
tag/{Aiff,Riff}: allow fstat() to fail
...
Omit the file size check if we don't know the size.
2016-02-19 18:16:14 +01:00
Max Kellermann
0acc88cde5
Merge branch 'v0.19.x'
2016-02-19 18:16:04 +01:00
Chris Spiegel
1e0ad1f6bf
Add TAK as a supported FFmpeg format.
2016-02-19 17:32:48 +01:00
Max Kellermann
4abcb08cc9
tag/{aiff,riff}: fix ID3 chunk padding
...
Apply padding only to the fseek(), not to the chunk size. This fixes
bogus "failed to read riff chunk" messages when the last chunk has an
odd size.
See http://bugs.musicpd.org/view.php?id=4486
2016-02-19 17:31:20 +01:00
Christian Halaszovich
3392cbbd91
Emit a warning if the OutputThread fails to get realtime scheduling
...
This only applies to linux systems. Here, sched_setscheduler() is
called to get realtime scheduling. With this patch, the return value
of this function is now checked and a warning / error message is
generated if it fails.
2016-02-19 17:09:44 +01:00
Chris Spiegel
e7b211f2c0
Add TAK as a supported FFmpeg format.
2016-02-12 18:49:10 -08:00
Max Kellermann
6c5bc9b4a3
lib/expat: use C++ exceptions instead of class Error
2016-02-07 12:58:20 +01:00
Max Kellermann
cd2f65aafc
upnp/ContentDirectoryService: use AtScopeExit() for ixmlDocument_free()
...
For exception-safety.
2016-02-07 12:56:55 +01:00
Max Kellermann
3ee5093b03
lib/upnp: use C++ exceptions instead of class Error
2016-02-07 12:53:21 +01:00
Max Kellermann
6e2ad6860f
lib/upnp/ClientInit: use class ScopeLock
2016-02-07 12:53:21 +01:00
Max Kellermann
8610eb84c6
util/RuntimeError: add missing include
2016-02-07 12:53:21 +01:00
Max Kellermann
a2e008347c
Main: catch and log C++ exceptions
2016-02-07 12:42:09 +01:00
Max Kellermann
a1ef0159e3
playlist/PlaylistStream: catch and log C++ exceptions
2016-02-07 12:18:58 +01:00
Max Kellermann
1c5f76635a
playlist/SongEnumerator: wrap song in std::unique_ptr
2016-02-07 11:58:54 +01:00
Max Kellermann
e2a0fd7a28
playlist/cue/CueParser: Get() returns std::unique_ptr
2016-02-07 11:58:17 +01:00
Max Kellermann
5869a4ba2d
playlist/cue/CueParser: use std::unique_ptr
2016-02-07 08:31:51 +01:00
Max Kellermann
ac9a93261b
playlist/cue/CueParser: use C++11 initializers
2016-02-07 08:30:49 +01:00
Max Kellermann
4b79f0047d
db/DatabaseError: add exception class DatabaseError
2016-02-07 01:09:33 +01:00
Max Kellermann
6a789b660a
command/CommandError: move code to ToAck(DatabaseErrorCode)
2016-02-07 01:09:10 +01:00
Max Kellermann
0d8e44a079
db/DatabaseError: rename enum db_error and make strictly-typed
2016-02-07 01:01:10 +01:00
Max Kellermann
f097952b42
lib/upnp: use std::unique_ptr
2016-02-06 23:57:29 +01:00
Max Kellermann
224d511616
upnp/Discovery: use std::unique_ptr in WorkQueue
2016-02-06 22:26:14 +01:00
Max Kellermann
050c6cc4b0
upnp/Discovery: use AtScopeExit() for exception-safety
2016-02-06 22:06:43 +01:00
Max Kellermann
bc2d23ff0d
util/ScopeExit: new utility library
...
Similar to boost::scope_exit, but fewer include dependencies.
2016-02-06 22:03:37 +01:00
Max Kellermann
2939fadd6a
decoder/Control: use ScopeLock
2015-12-31 13:45:10 +01:00
Max Kellermann
ef260377c3
decoder/Internal: use ScopeLock
2015-12-31 13:44:19 +01:00
Max Kellermann
b9213df64b
decoder/API: use ScopeLock
2015-12-31 13:43:35 +01:00
Max Kellermann
aa7694047b
decoder/Thread: pass InputStream errors to DecoderControl::error
...
Give MPD clients access to the error condition.
2015-12-31 13:39:13 +01:00
Max Kellermann
e2bc63217a
decoder/Thread: decoder_input_stream_open() returns std::unique_ptr<InputStream>
...
Fixes memory leak after InputStream::Check() failure.
2015-12-31 13:39:13 +01:00
Max Kellermann
6c5b8bcf9d
decoder/Thread: log all errors
2015-12-31 13:38:35 +01:00
Max Kellermann
e425fe3f97
decoder/Thread: use std::unique_ptr<InputStream>
2015-12-31 13:12:28 +01:00
Max Kellermann
6507993972
decoder/Thread: move decoder_command_finished_locked() to DecoderControl
2015-12-31 13:06:31 +01:00
Max Kellermann
f081696f62
decoder/Thread: convert "int ret" to "bool success"
2015-12-31 13:02:55 +01:00
Max Kellermann
09157c3130
decoder/Thread: use ScopeLock in decoder_run_stream()
2015-12-31 13:01:49 +01:00
Max Kellermann
00626b1633
decoder/Thread: use std::unique_ptr<InputStream>
2015-12-31 13:01:03 +01:00
Max Kellermann
7e0cdbe502
decoder/Thread: use ScopeUnlock for exception-safety
2015-12-31 12:59:06 +01:00
Max Kellermann
ca08902d71
decoder/Thread: use ScopeLock in TryDecoderFile()
2015-12-31 12:58:58 +01:00
Max Kellermann
fad0e834d5
decoder/Thread: always unlock mutex before returning from TryDecoderFile()
...
Remove that surprising rule.
2015-12-31 12:57:35 +01:00
Max Kellermann
dc76eb6139
decoder/Thread: mutex not locked for decoder_run_{file,stream}()
2015-12-31 12:42:02 +01:00
Max Kellermann
55e113c7a7
decoder/Thread: document locking rules
2015-12-31 12:36:32 +01:00
Max Kellermann
b62f5e079e
decoder/Thread: use ScopeLock for exception-safety
2015-12-31 12:36:00 +01:00
Max Kellermann
ac1eaff6ec
thread/Mutex: add class ScopeUnlock()
2015-12-31 12:30:53 +01:00
Max Kellermann
45f6129ae7
player/Control: don't stop playback in Play()
...
Instead of stopping playback completely, only CANCEL the queued song
if necessary, and use the SEEK command to play the selected song.
SEEK will take care for current playback state.
2015-12-29 13:49:15 +01:00
Max Kellermann
f3503e0026
fs/DirectoryReader: use C++ exceptions instead of class Error
2015-12-29 12:56:26 +01:00
Max Kellermann
826a654c95
fs/DirectoryReader: use C++11 initializer
2015-12-29 12:56:26 +01:00
Max Kellermann
08754e6ce7
system/Error: add IsAccessDenied()
2015-12-29 12:56:26 +01:00
Max Kellermann
3843972b05
command/Error: workaround for gcc 4.x rethrow_exception(exception_ptr)
2015-12-29 12:39:28 +01:00
Max Kellermann
37862f0f20
PlaylistFile: convert more APIs from Error to std::exception
2015-12-28 14:20:37 +01:00
Max Kellermann
1f184f4aec
PlaylistFile: throw exception on spl_map_to_fs() failure
2015-12-28 14:20:37 +01:00
Max Kellermann
db5a691693
PlaylistFile: remove obsolete function TranslatePlaylistError()
2015-12-28 14:20:37 +01:00
Max Kellermann
48693250a4
command/Error: no std::exception_ptr forward declaration
...
This breaks on some standard library implementations.
2015-12-28 14:20:37 +01:00
Max Kellermann
570dcb6309
command/Error: support nested exceptions
2015-12-28 07:00:01 +01:00
Max Kellermann
19e43087a8
command/Error: move code to ToAck(std::exception_ptr)
2015-12-28 06:53:52 +01:00
Max Kellermann
fe0b6a1117
PlaylistFile: convert system_error::ENOENT to PlaylistResult::NO_SUCH_LIST
2015-12-28 06:44:01 +01:00
Max Kellermann
72851647ca
PlaylistError: fix NoSuchSong() code
2015-12-28 06:44:01 +01:00
Max Kellermann
1c90400081
command/Error: pass std::exception_ptr to PrintError()
...
Necessary to preserve type information. The try/catch sequence didn't
work previously.
2015-12-27 06:43:55 +01:00
Max Kellermann
672e18cac9
system/Error: fix duplicate strerror() call
...
Apparently, the std::system_error constructor appends strerror()
already.
2015-12-27 06:05:53 +01:00
Max Kellermann
e939d667d9
protocol/Ack: add exception class wrapping enum ack
2015-12-18 09:53:02 +01:00
Max Kellermann
8bb5a565cd
PlaylistError: add exception class wrapping enum PlaylistResult
2015-12-18 09:21:11 +01:00
Max Kellermann
7562c5751c
db/Configured: allocate ConfigBlock on the stack
2015-12-18 09:17:12 +01:00
Max Kellermann
e6e7d6dbd6
fs/io/Reader: use C++ exceptions instead of class Error
2015-12-18 01:08:16 +01:00
Max Kellermann
fe60c52c70
system/Error: add MakeErrno(), MakeLastError()
2015-12-18 01:08:16 +01:00
Max Kellermann
93f4590453
system/Error: add IsFileNotFound()
2015-12-18 00:54:23 +01:00
Max Kellermann
1098d271b8
util/Error: add bridge to std::exception
2015-12-18 00:24:43 +01:00
Max Kellermann
51168169e7
util/Tokenizer: use std::runtime_error on syntax error
2015-12-16 11:34:26 +01:00
Max Kellermann
d256a0e98f
config/ConfigFile: use std::exception on syntax error
2015-12-16 11:13:16 +01:00
Max Kellermann
6717325c3f
config/ConfigFile: use std::unique_ptr
2015-12-16 11:13:16 +01:00
Max Kellermann
c4a0571e7a
config/ConfigFile: fix typo in format string
2015-12-16 11:13:16 +01:00
Max Kellermann
e4a06da14e
fs/io/OutputStream: use C++ exceptions in Write()
2015-12-16 10:24:43 +01:00
Max Kellermann
36d6ead65c
fs/io/GzipOutputStream: use C++ exceptions in constructor
2015-12-16 10:14:56 +01:00
Max Kellermann
7eae3bc8c5
fs/io/FileOutputStream: use C++ exceptions in Commit()
2015-12-16 00:33:33 +01:00
Max Kellermann
24b2198668
fs/io/FileOutputStream: use C++ exceptions in constructor
2015-12-16 00:33:30 +01:00
Max Kellermann
d29be0f460
db/simple: use std::unique_ptr<GzipOutputStream>
2015-12-16 00:33:10 +01:00
Max Kellermann
8f93c36466
command/AllCommands: catch and report std::exception
2015-12-16 00:07:51 +01:00
Max Kellermann
3092e5a8a5
system/Error: helper library for constructing std::system_error
2015-12-16 00:07:51 +01:00
Max Kellermann
55f95b3ac9
Log: C++ exception support
2015-12-16 00:07:51 +01:00
Max Kellermann
c11345c4d9
db/DatabaseLock: add class ScopeDatabaseUnlock
2015-12-16 00:07:51 +01:00
Max Kellermann
e31f0b8b0c
db/simple: use class ScopeDatabaseLock
2015-12-16 00:07:51 +01:00
Max Kellermann
7dd3b72a8c
db/DatabaseLock: add ScopeDatabaseLock::unlock()
2015-12-16 00:07:51 +01:00
Max Kellermann
9bc0fada5c
release v0.19.12
...
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
iQIcBAABCAAGBQJWcH4fAAoJECNuiljG20USbAcQAKX0G+V10HI2Bmf7JJ3pWW96
GiOBpd66pEPioXdfpxOQNLglKS+rcproCWZnQf/VSoYN5d6pT6VLCQiMpdm3ZkNO
ZLWGhJ0Md1PGj+xjfGrMw95g+cqV+wMo1PETOsE/MtINqN/nMyQNI7lFnZ8xYEAP
DhJB1pXdchHvUVM3o+vpGSEOScn3XstL8+a/K5+Rvxptew4QDI/0ucyTLcLaaxkY
r/bH8wTDSMSpez4M5Me9MQ9OJ9NUPgudvs8Ppzji26lMcQRnZGdcffGTj08Lv+1b
gyx25t8sija6XVt6AEqn8KX+YAhe94c7ROq5PzdLeUszUf4YFIqaZ7O19PSYuuB6
APfr25A7NBQtJ88Wjw6slco+mAwbLZwQewZtFZCq6Y8J3oRBG6bpaPhFWUyygqTL
rIU735+o3FvqijKJUtKG0rAz+wfsPk6TMvIg4VMUaQXneS1LbzZe2Nz2FGxtonpd
Ua/tBQ/LnX8Utueuhy0kH06qPqq1/eSCMZIH/yphfR+B5k90h719RN/BR5xPv9Fb
vRdiSgPtfACAHvnadqcpVGjmmCQtXurC7gFceEc4Anign5kkSSGrDmo9OYhxwSkl
8A2GeOmxNrs2aFkNelnH3C6BTOEcewbXEmPQhTiBoX9LDmDK31rfSoVI0SUt7rbR
Sbt21m+7ThEqFfafZ8a/
=hDes
-----END PGP SIGNATURE-----
Merge tag 'v0.19.12'
release v0.19.12
2015-12-15 22:05:21 +01:00
Benno Fünfstück
cae2811762
fix mpd crash on invalid utf8 stream title
2015-12-15 21:49:53 +01:00
Max Kellermann
28f9a0a900
command/other: re-allow "lsinfo /"
...
This compatibility hack was accidently broken by commit f072cbbb
2015-11-13 21:04:02 +01:00
Max Kellermann
a6bb3cf60a
command/queue: use StringIsEqual() instead of memcmp()
...
memcmp() can overflow the buffer.
2015-11-13 21:02:33 +01:00
Max Kellermann
004da5d385
queue/Save: fix "Malformed playlist line in state file"
...
Regression by commit 738583e3
2015-11-13 20:45:50 +01:00
Max Kellermann
0368282486
player/Control: add code comments
2015-11-13 16:02:07 +01:00
Max Kellermann
4404f20cf4
player/Control: Seek*() returns Error information
2015-11-11 19:56:09 +01:00
Max Kellermann
faca8bc02a
decoder/Control: Seek() returns Error information
2015-11-11 19:56:08 +01:00
Max Kellermann
5e93c05095
queue/Playlist: seek methods return bool/Error instead of PlaylistResult
2015-11-11 19:56:01 +01:00
Max Kellermann
0f4f04eaa4
command/CommandError: send verbose error message to client
2015-11-11 19:51:09 +01:00
Max Kellermann
2e55d561d3
PlaylistError: remove unused code "ERRNO"
2015-11-11 19:50:57 +01:00
Max Kellermann
76a9049739
decoder/Control: State::ERROR is illegal
...
The state ERROR can only be entered during decoder initialization, and
Seek() may only be called after initialization has been finished.
2015-11-11 17:46:06 +01:00