Max Kellermann
0d0ccacdf3
fs/OutputStream: new infrastructure for writing to files
2014-07-30 22:12:02 +02:00
Max Kellermann
c8858f85d8
util/Error: add method FormatLastError()
2014-07-30 22:10:31 +02:00
Max Kellermann
d1bc46ffad
util/Error: add SetLastError() overload with "DWORD code" parameter
2014-07-30 22:08:26 +02:00
Max Kellermann
32e5848f34
util/Error: add "printf" attributes
2014-07-30 22:02:46 +02:00
Max Kellermann
be36c0769a
TagId3: fix printf string parameter
2014-07-30 22:02:46 +02:00
Max Kellermann
f9e63dfd65
util/DynamicFifoBuffer: fix typo in API documentation
2014-07-30 20:53:09 +02:00
Max Kellermann
fa05dac5ae
StateFile: use nullptr instead of NULL
2014-07-30 18:45:14 +02:00
Max Kellermann
430dd3ae05
encoder/opus: use nullptr instead of NULL
2014-07-30 18:45:00 +02:00
Max Kellermann
664fc76ac7
system/Resolver: use nullptr instead of NULL
2014-07-30 18:44:40 +02:00
Max Kellermann
37d6cc07a7
pcm: use nullptr instead of NULL
2014-07-30 18:44:20 +02:00
Max Kellermann
d79b6cd8dc
playlist/extm3u: use nullptr instead of NULL
2014-07-30 18:44:03 +02:00
Max Kellermann
82ecebb393
Main: don't require mpd.conf on Android
...
Don't fail to start if mpd.conf does not exist; just use default
values.
2014-07-30 10:22:22 +02:00
Max Kellermann
12b5494906
db/proxy: implement Update()
2014-07-29 23:35:09 +02:00
Max Kellermann
aa0f06d6b7
db/Interface: add virtual method Update()
...
For database plugins that don't use the UpdateService.
2014-07-29 23:31:27 +02:00
Max Kellermann
0c47685e02
OtherCommands: split handle_update()
2014-07-29 23:29:57 +02:00
Max Kellermann
d8558a3af3
util/Cast: add "const" overload
2014-07-14 17:08:57 +02:00
Max Kellermann
72eedb1c98
util/Cast: add missing include
2014-07-14 17:08:41 +02:00
Max Kellermann
3c5cf9500d
util/Cast: fix indent
2014-07-14 16:44:43 +02:00
Max Kellermann
7a1f3177c9
util/Cast: reimplement as template without macro
2014-07-14 16:24:07 +02:00
Max Kellermann
f8da8b0261
util/Cast: add const overloads
2014-07-14 16:02:02 +02:00
Max Kellermann
393cb7fd7d
util/Cast: suppress "unused function" warning by using "inline"
2014-07-14 15:58:12 +02:00
Max Kellermann
e74e1256d4
util/Cast: fix indent
2014-07-14 15:57:48 +02:00
Max Kellermann
96abd70c13
decoder/dsdiff: move artist/title/id3 offsets out of DsdiffMetaData
...
They are only used inside dsdiff_read_metadata_extra().
2014-07-12 20:51:25 +02:00
Max Kellermann
1f9d9c3176
Merge branch 'v0.18.x'
2014-07-12 20:51:22 +02:00
Max Kellermann
94efeb2845
decoder/dsdiff: simplify dsdlib_skip() call
2014-07-12 20:51:00 +02:00
Max Kellermann
a73834436f
decoder/dsdiff: simplify loop condition, merge branches
2014-07-12 20:46:24 +02:00
Max Kellermann
85f4aeca05
decoder/dsdiff: ignore garbage null byte at end of file
...
Failure to read another chunk header is not fatal. Continue to read
metadata.
2014-07-12 20:41:26 +02:00
Max Kellermann
7db84a961a
decoder/dsdiff: fix metadata parser bug (uninitialized variables)
2014-07-12 20:41:26 +02:00
Max Kellermann
74e95e88d8
PlaylistSong: always merge tags and LastModified
2014-07-12 19:41:04 +02:00
Max Kellermann
80d9baa9e8
QueueSave: use the long format to save partial songs
...
Previously, only streams were saved with range and tags, but this is
necessary for all "partial" songs (e.g. CUE tracks).
2014-07-12 19:36:39 +02:00
Max Kellermann
751995ab95
QueueCommands: new command "rangeid"
...
Manipulates the playback range of a queued song.
2014-07-12 18:55:41 +02:00
Max Kellermann
5ca6e2910a
PlaylistSong, CueParser: don't override Tag::time
...
Now that Song::GetDuration() is used (which considers start_ms and
end_ms), we don't need to override the Tag's duration value.
2014-07-12 18:54:20 +02:00
Max Kellermann
071d05465a
SongPrint: use DetachedSong::GetDuration()
...
Fixes the bogus duration of the last track in a CUE sheet.
2014-07-12 18:41:15 +02:00
Max Kellermann
11a9536271
TagPrint: split tag_print()
...
Add one method that prints only the tag values, but not the song
duration.
2014-07-12 17:42:38 +02:00
Max Kellermann
41a7203c28
Tag: add class const_iterator and methods begin(), end()
...
Enables using range-based "for".
2014-07-12 17:22:39 +02:00
Max Kellermann
543a58bb87
DecoderBuffer: implement _skip() using decoder_skip()
2014-07-12 02:26:38 +02:00
Max Kellermann
b2b95cad20
DecoderBuffer: add method _need()
...
Move code from the FAAD decoder plugin.
2014-07-12 02:23:48 +02:00
Max Kellermann
eabec967ec
DecoderBuffer: remove unused method _is_full()
2014-07-12 02:23:36 +02:00
Max Kellermann
e42b152037
decoder/faad: eliminate the adts_find_frame() loop
...
This loop is completely unnecessary. We just need to find the first
ADTS frame and feed it into NeAACDecInit().
2014-07-12 01:51:39 +02:00
Max Kellermann
da599e3f1a
decoder/faad: split faad_stream_decode()
...
Eliminate duplicate cleanup code.
2014-07-12 01:47:07 +02:00
Max Kellermann
4c7b0b935b
DecoderBuffer: remove unused method _is_empty()
2014-07-12 01:28:37 +02:00
Max Kellermann
c400876df1
Merge branch 'v0.18.x'
2014-07-12 01:27:18 +02:00
Max Kellermann
a960e2ef48
decoder/faad: estimate song duration for remote files
...
Previously, MPD tried to slurp the whole song file, count the number
of frames and calculate the song duration from that. That however is
extremely expensive for remote files, and will delay playback for a
long time. Workaround: check only the first 128 frames and try to
extrapolate from here. Fixes Mantis ticket 0004035.
2014-07-12 00:37:00 +02:00
Max Kellermann
4fe272a7fb
DecoderBuffer: add method _available()
2014-07-12 00:35:32 +02:00
Max Kellermann
a7d9f248ea
DecoderBuffer: add method _get_stream()
2014-07-12 00:23:22 +02:00
Max Kellermann
06aa689383
decoder/faad: bail out early if sample rate is invalid
2014-07-12 00:23:11 +02:00
Max Kellermann
835b0c44cd
decoder/faad: use adts_check_frame() in faad_song_duration()
...
Eliminate more duplicate code.
2014-07-12 00:18:02 +02:00
Max Kellermann
54b6f8a4ae
decoder/faad: test "seekable" after ADTS frame check
...
Don't bother to check for ADIF just because the stream is not
seekable.
2014-07-12 00:17:51 +02:00
Max Kellermann
18787ebe8f
decoder/faad: move code to faad_decoder_new()
...
Merge some duplicate code.
2014-07-12 00:17:43 +02:00
Max Kellermann
47e8fcf37e
decoder/faad: remove unnecessary read
...
Eliminate some overhead when the caller doesn't need the buffer.
2014-07-12 00:17:30 +02:00
Max Kellermann
5958b78459
DecoderBuffer: add "pure" attributes
2014-07-12 00:16:41 +02:00
Max Kellermann
9d9697b366
DecoderBuffer: add method _clear()
2014-07-12 00:15:35 +02:00
Max Kellermann
6585e18571
decoder/faad: check sample_rate, not frames_per_second
...
Checking the integer is faster, easier and more reliable.
2014-07-11 23:12:08 +02:00
Max Kellermann
6f1b4292f0
decoder/faad: make variables more local
2014-07-11 22:52:31 +02:00
Max Kellermann
ef9ef03b1f
decoder/faad: use MAX_CHANNELS
...
.. instead of declaring a new constant.
2014-07-11 22:40:28 +02:00
Max Kellermann
c4bea3dfe4
decoder/sndfile: implement scan_stream() instead of scan_file()
2014-07-11 22:09:35 +02:00
Max Kellermann
eaa9a1e33b
decoder/sndfile: make variables more local
2014-07-11 22:03:26 +02:00
Max Kellermann
3e19298c9e
decoder/sndfile: support more tag types
2014-07-11 22:03:13 +02:00
Max Kellermann
2a96ce97ee
decoder/sndfile: add str_type to TagType table
2014-07-11 21:57:41 +02:00
Max Kellermann
8cfe901391
decoder/sndfile: move code to sndfile_handle_tag()
2014-07-11 21:56:02 +02:00
Max Kellermann
30f1ee7a1f
decoder/sndfile: log libsndfile version on startup
2014-07-11 21:53:03 +02:00
Max Kellermann
46ff830daa
PlaylistEdit: fix typo in code comment
2014-07-11 21:37:06 +02:00
Max Kellermann
828cd6fd0b
Merge branch 'v0.18.x'
2014-07-11 21:33:50 +02:00
Max Kellermann
ecb67a1ed1
decoder/sndfile: use decoder_read_full()
...
Replaces the loop in sndfile_vio_read(), eliminating duplicate and
fragile code.
2014-07-11 21:18:44 +02:00
Max Kellermann
0ef843f138
decoder/sndfile: use decoder_read()
...
.. instead of InputStream::LockRead(). The former is cancellable.
2014-07-11 21:18:44 +02:00
Max Kellermann
eb79d83051
decoder/sndfile: log seek errors
2014-07-11 21:18:44 +02:00
Max Kellermann
ca1a11493d
decoder/audiofile: log seek errors
2014-07-11 21:18:44 +02:00
Max Kellermann
69bb086ba5
decoder/audiofile: fix typo in comment
2014-07-11 21:18:44 +02:00
Max Kellermann
11a5ee821b
PlaylistEdit: postpone UpdateQueuedSong() when adding multiple songs
...
Implement a "bulk" edit mode that postpones both UpdateQueuedSong()
and OnModified(). This way, the playlist version gets incremented
only once. More importantly: when adding multiple songs to a queue
that consists of only one song, the first song that got added will
always be played next. By postponing this choice, all newly added
songs get a chance to become the next song. Fixes the second (and
last) part of Mantis ticket 0004005.
2014-07-11 20:22:35 +02:00
Max Kellermann
a8a85143f6
QueueCommands: make "result" more local
2014-07-11 20:22:35 +02:00
Max Kellermann
e2cc328eef
Playlist: randomize next song when enabling "random" mode while not playing
...
Don't restore the current song after shufflung when MPD is stopped
(but still remembers the current song internally). Fixes the first
part of Mantis ticket 0004005.
2014-07-11 19:41:39 +02:00
Max Kellermann
344d10a8e3
PlaylistControl: update code comment
2014-07-11 19:29:25 +02:00
Max Kellermann
681643ea9e
input/curl: options "verify_peer" and "verify_host"
2014-07-11 16:39:42 +02:00
Mantas Mikulėnas
cd289843f7
fs/StandardDirectory: look for cache dir in environment, not user-dirs
...
The XDG cache directory is part of the "base directories" spec like
$XDG_CONFIG_HOME, not "user directories".
2014-07-11 08:09:19 +02:00
Max Kellermann
b123392592
input/async: more API documentation
2014-07-10 10:33:43 +02:00
Max Kellermann
ccbb5c3e01
decoder/audiofile: log libaudiofile errors
2014-07-10 09:37:43 +02:00
Max Kellermann
49b63e084f
decoder/audiofile: make variables more local
2014-07-10 09:26:12 +02:00
Max Kellermann
107321e385
decoder/audiofile: implement scan_stream() instead of scan_file()
2014-07-10 09:23:56 +02:00
Max Kellermann
1d214b4aed
decoder/audiofile: use audiofile_get_duration() in _stream_decode()
2014-07-10 08:35:24 +02:00
Max Kellermann
2e1347aba4
decoder/audiofile: split audiofile_get_duration()
2014-07-10 08:31:41 +02:00
Max Kellermann
9ddb5931fb
decoder/audiofile: remove unused Error variable
2014-07-09 20:03:11 +02:00
Max Kellermann
913064d6cc
Merge branch 'v0.18.x'
2014-07-09 20:02:07 +02:00
Gustavo Zacarias
fb45b8a5c9
playlist/plugins/DespotifyPlaylistPlugin: fix build failure due to missing stdio.h include
...
Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
2014-07-09 19:54:35 +02:00
Gustavo Zacarias
f5c9056430
output/plugins/httpd/HttpdClient: fix build failure due to missing stdio.h include
...
Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
2014-07-09 19:54:35 +02:00
Gustavo Zacarias
0e39b59700
decoder/plugins/FlacIOHandle: fix build failure due to missing stdio.h include
...
Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
2014-07-09 19:54:35 +02:00
Max Kellermann
552af5455e
decoder/dsdlib: use decoder_skip()
...
Reduce duplicate code.
2014-07-09 19:42:36 +02:00
Max Kellermann
8759bc1b41
decoder/dsdlib: pass unsigned offsets to dsdlib_skip*()
2014-07-09 19:39:10 +02:00
Joff
09384df32c
decoder/dsd: use decoder_read_full() where appropriate
...
Addresses Mantis ticket 0004015.
[mk: use decoder_read_full() only when needed, and a few formal
changes]
2014-07-09 19:18:36 +02:00
Max Kellermann
20538516b9
decoder/audiofile: use decoder_read_full()
...
Works around WAV stream playback bug, because libaudiofile does not
like partial reads (Mantis 0004028).
2014-07-09 19:05:20 +02:00
Max Kellermann
0759421d11
DecoderAPI: add function decoder_read_full()
...
Move code from the "mad" plugin.
2014-07-09 19:03:58 +02:00
Max Kellermann
bf7417981f
DecoderAPI: add function decoder_skip()
...
Move code from the "mad" plugin.
2014-07-09 19:03:31 +02:00
Max Kellermann
bc6472bb9e
decoder/audiofile: use decoder_read()
...
.. instead of InputStream::LockRead(). The former is cancellable.
2014-07-09 18:57:50 +02:00
Gustavo Zacarias
d4bd947bf5
playlist/PlsPlaylistPlugin: fix build failure due to missing stdio.h include
...
Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
2014-07-09 17:41:31 +02:00
Gustavo Zacarias
d8e8eabf60
output/HttpdClient: fix build failure due to missing stdio.h include
...
Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
2014-07-09 17:41:31 +02:00
Gustavo Zacarias
a70443af31
decoder/OpusDecoderPlugin: fix build failure due to missing stdio.h include
...
Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
2014-07-09 17:41:31 +02:00
Gustavo Zacarias
3f221e2edb
decoder/AudiofileDecoderPlugin: fix build failure due to missing stdio.h include
...
Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
2014-07-09 17:41:31 +02:00
Max Kellermann
56504534d8
thread/{Mutex,Cond}: relicense to BSD-2
2014-07-02 20:09:39 +02:00
Max Kellermann
80a45c91f9
thread/GLib{Mutex,Cond}: remove obsolete classes
2014-07-02 20:09:39 +02:00
Max Kellermann
3f695fdfaf
lib/nfs/Connection: include poll.h
2014-06-30 10:22:08 +02:00
Christoph Tieben
88433bca22
Added Comment/Description to decoder/plugins/XiphTags.cxx
2014-06-27 21:14:55 +02:00
Christoph Tieben
34689eb2d2
decoder: vorbis, flac, opus: honor DESCRIPTION= tag in Xiph-based files as a comment to the song
...
(see https://www.xiph.org/vorbis/doc/v-comment.html for Details)
2014-06-27 21:14:17 +02:00
Max Kellermann
211aea1441
util/ConstBuffer: add method skip_front()
2014-06-26 22:25:03 +02:00
Max Kellermann
74a46788cd
util/ConstBuffer: wrap assert() in NDEBUG check
...
Fixes build failure because assert.h was not included.
2014-06-26 13:31:48 +02:00
Max Kellermann
7213c26798
util/ConstBuffer: add method Contains()
2014-06-23 22:30:01 +02:00
Max Kellermann
fa1fb47d75
Merge branch 'v0.18.x'
2014-06-23 10:13:50 +02:00
Max Kellermann
848ed14788
db/proxy: fall back to recursive walk on old libmpdclient/MPD
...
Error message was 'too few arguments for "find"' because the "base"
constraint was not supported, and no other constraints remained.
2014-06-23 09:18:11 +02:00
Max Kellermann
4c8a5dfb05
db/proxy: use mpd_song_get_{start,end}() only with libmpdclient >= 2.3
2014-06-23 09:17:35 +02:00
Max Kellermann
b9eeb6e6eb
db/proxy: use mpd_song_get_{start,end}() only with libmpdclient >= 2.3
2014-06-23 08:57:51 +02:00
Max Kellermann
d5fa2af353
input/async: use IsEOF() instead of !open for "ready" check
...
Checking "!open" did not work with the NFS plugin because that plugin
does not close the file automatically, unlike CURL.
2014-06-21 14:13:31 +02:00
Max Kellermann
a877926f08
Revert "AsyncInputStream: fix assertion failure in AppendToBuffer()"
...
This reverts commit 966c4244cb
.
The commit was bad, because the bug was really in
NfsInputStream::DoRead(); see previous commit.
2014-06-21 14:07:15 +02:00
Max Kellermann
3e4e6f7ced
input/nfs: never read more than space available in buffer
...
Avoids off-by-one bug and obsoletes the bug fix in commit 966c4244
2014-06-21 14:06:31 +02:00
Max Kellermann
936eb43c0e
db/proxy: initialize LightSong::real_uri
...
Fixes potential crash.
2014-06-21 12:37:23 +02:00
Max Kellermann
eb8fd07900
lib/nfs/Manager: gcc 4.7 compatibility hack
...
std::map::emplace() is only available from gcc 4.8 on.
2014-06-17 10:35:34 +02:00
Max Kellermann
c99559dbe9
input/nfs: use the asynchronous libnfs API
...
More robust and cancellable.
2014-06-17 03:21:25 +02:00
Max Kellermann
966c4244cb
AsyncInputStream: fix assertion failure in AppendToBuffer()
2014-06-17 03:21:11 +02:00
Max Kellermann
81283f8bcb
AsyncInputStream: reset "paused" when seeking
...
May cause assertion failure.
2014-06-17 03:20:49 +02:00
Max Kellermann
8b84e5b3f9
input/curl: hold mutex while writing to postponed_error
2014-06-17 02:32:17 +02:00
Max Kellermann
e1d5ddb478
input/AsyncInputStream: add method IsBufferFull()
2014-06-17 02:32:17 +02:00
Max Kellermann
2da0322329
command: make argc unsigned
2014-06-16 19:50:34 +02:00
Max Kellermann
fefb35c782
Directory: eliminate attribute "have_stat"
...
Check for 0 in "device" and "inode" instead.
2014-06-16 19:46:35 +02:00
Max Kellermann
b2433a664c
TagPool: move code to tag_value_slot_p()
2014-06-16 19:26:26 +02:00
Max Kellermann
adad4279f3
TagPool: convert macro to constexpr
2014-06-16 19:18:10 +02:00
Max Kellermann
3ca0a39a35
db/simple: use class boost::intrusive::list
...
Remove the C list_head library and use type-safe C++ instead.
2014-06-16 18:39:16 +02:00
Max Kellermann
3364c1b893
ClientList: use class boost::intrusive::list
...
Eliminate extra allocations for the std::list node instances.
2014-06-11 09:27:17 +02:00
Max Kellermann
507d8fdc6f
ClientList: add typedef List
2014-06-10 23:21:09 +02:00
Max Kellermann
31e29e62f4
zeroconf/Avahi: call dbus_shutdown() during shutdown
...
Make valgrind happy.
2014-06-10 23:21:09 +02:00
Max Kellermann
dfcb572985
Main: delete the Storage instance on shutdown
2014-06-10 23:21:09 +02:00
Max Kellermann
1d324176d1
lib/icu/Init: call u_init() and u_cleanup()
...
Make valgrind happy.
2014-06-10 23:21:09 +02:00
Max Kellermann
37b3190752
lib/icu: add IcuInit(), IcuFinish()
2014-06-10 23:21:09 +02:00
Max Kellermann
dc14ac7a8f
thread/Util: relicense to BSD-2
2014-05-31 12:11:53 +02:00
Max Kellermann
fb52a24da3
input/async: add offset/size comparison to IsEOF()
2014-05-24 15:19:22 +02:00
Max Kellermann
fbafb19657
input/curl: move code to AsyncInputStream
...
New base class for other InputStream implementations that run in the
I/O thread.
2014-05-24 14:36:28 +02:00
Max Kellermann
6c4438d8a9
input/curl: call SetReady() only if not yet ready
...
Fixes assertion failure.
2014-05-24 14:36:25 +02:00
Max Kellermann
be00737ced
input/curl: include cleanup
2014-05-24 12:43:48 +02:00
Max Kellermann
07b93dcf80
InputStream: make Seek() always absolute
...
Remove the "whence" parameter that is not actually necessary, and only
complicates the InputStream implementations.
2014-05-22 13:52:00 +02:00
Max Kellermann
374c6a27db
decoder/vorbis: make VorbisInputStream::input_stream a reference
2014-05-22 13:52:00 +02:00
Max Kellermann
36c9e95969
decoder/vorbis: add VorbisInputStream constructor
2014-05-22 13:52:00 +02:00
Max Kellermann
a3142ee4e6
decoder/vorbis: rename struct vorbis_input_stream to VorbisInputStream
2014-05-22 13:52:00 +02:00
Max Kellermann
437caeb90f
decoder/vorbis: add "restrict" to pointers in vorbis_interleave()
...
Allows more compiler optimizations.
2014-05-22 13:52:00 +02:00
Max Kellermann
af49cace8d
decoder/vorbis: log libvorbis version on startup
2014-05-22 13:52:00 +02:00
Max Kellermann
13b78d0d89
decoder/wavpack: move code to WavpackInput::ReadBytes()
2014-05-22 12:54:56 +02:00
Max Kellermann
65c135b451
decoder/wavpack: convert WavpackInput attributes to references
2014-05-22 12:52:33 +02:00
Max Kellermann
ec162f265f
decoder/wavpack: move wavpack_input_init into struct WavpackInput
2014-05-22 12:47:20 +02:00
Max Kellermann
ba99696771
decoder/wavpack: wavpack_open_wvc() returns WavpackInput*
2014-05-22 12:36:55 +02:00
Max Kellermann
4eeea640f4
DecoderAPI: add function decoder_open_uri()
...
Move and refactor code from the Wavpack decoder plugin.
2014-05-22 12:35:20 +02:00
Max Kellermann
631b635652
decoder/wavpack: rename struct wavpack_input to WavpackInput
2014-05-22 10:52:34 +02:00
Max Kellermann
49695d47d3
input/curl: relock mutex in error paths
2014-05-21 19:00:47 +02:00
Max Kellermann
5cec477131
input/curl: pass remaining size to CircularBuffer::Append()
2014-05-21 18:59:51 +02:00
Max Kellermann
a5d0300787
input/curl: move code to IcyInputStream
2014-05-21 18:47:49 +02:00
Max Kellermann
09b84c51ee
input/rewind: move code to class ProxyInputStream
2014-05-21 18:47:49 +02:00
Max Kellermann
c42e412c0a
input/InputStream: move Open() to Open.cxx
...
Allow compiling test programs with only selected plugins.
2014-05-21 18:47:32 +02:00
Max Kellermann
542e7feba8
input/rewind: include cleanup
2014-05-21 18:47:22 +02:00
Max Kellermann
dc085e0bd2
input/rewind: work around assertion failure
...
Caused by commit 0b4fa41a
2014-05-21 18:47:12 +02:00
Max Kellermann
7c9517343c
ThreadInputStream: include cleanup
2014-05-12 19:04:32 +02:00
Max Kellermann
0b4fa41aff
InputStream: "protect" attributes
2014-05-12 18:59:46 +02:00
Max Kellermann
e138e2c880
input/cdio: convert to class
2014-05-12 18:59:25 +02:00
Max Kellermann
0d6345e98b
input/cdio: move initialization code to constructor
...
Make attributes const, don't allow partial initialization.
Instantiate the CdioParanoiaInputStream object at the end of
input_cdio_open().
2014-05-12 18:54:05 +02:00
Max Kellermann
a84bcf597d
input/cdio: handle cdio_open() failure
2014-05-12 18:53:47 +02:00
Max Kellermann
4bbd4ba855
input/cdio: initialize lsn_relofs in constructor
2014-05-12 18:48:16 +02:00
Max Kellermann
9e5b56b475
input/cdio: initialize attribute "buffer_lsn"
2014-05-12 18:47:27 +02:00
Max Kellermann
dd383037fd
input/cdio: remove unused attribute "trackno"
2014-05-12 18:41:45 +02:00
Max Kellermann
3cd24c0a51
release v0.18.11
...
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
iQIcBAABAgAGBQJTcPbuAAoJECNuiljG20US+LsQAI5LcUiQ2AxfDdXfEkIW+ryQ
U5htp4RAAizVFEAdgzdDOoHBVefkvwij6G9ND9WAbJRsUOZs62XwlnOFaB/uQPhd
VvoNIQLmuUNxltF1itaCTJ0UJkXi6ObVExpwMScGI242uUmoNnxwsWxDxyy2s4bn
On/OwT64zTOsPTjkYGdfGncwx4dhQc2KJvGGD6y/lMhxUnn3NoKG/VOgleN4ALcL
KQ0SFQOFbUHJcvMXYdMzhe426d7GiHzFVIfdU16yJz47/xHDmaM+VVJQCOF68rrw
kyb2POxR4VXhPMfIleF2RiCopvDGSvQfUE3jhQjKBgZE2NeFeI/5N6JcWbZgFJ/J
4ez3DcjSD1Oeoz6gzaq1QybCku4EZTvPa6Kbb5/84JNKmVdb/JowGF0L18bwTbGv
y5D5HN3zTdmBXwsiDnTNDtuwaSejvIDTN1k4AkdQ9mLMIMT+13NHLBs1rDE2JnlG
3xhXrIvwhUBdE1A4uFj8duzk11EWzNI+ltJBRnG8uEzAJxpv5Khiwmj2GciS6s5r
wp1YUIUA0BhrEgrtoTdE7x13lXkDrmydcJ5kA0kArJFQALliE7kivyg1gtrcNRj1
7fDRAb9QOxaJrrsJzM9f9pDaIttHRjRvurFtikD90oaRE1g+6ygeScmYJDPhPjvU
R6PxzvsMCn8kJFWq2ARg
=Ubmu
-----END PGP SIGNATURE-----
Merge tag 'v0.18.11'
2014-05-12 18:38:45 +02:00
Max Kellermann
41507d8129
icu/Collate: use u_strFoldCase() instead of ucol_getSortKey()
...
Turns out ucol_getSortKey() does not what I thought it does.
2014-05-12 14:43:30 +02:00
Max Kellermann
317a98a5a9
icu/Collate: UCharFromUTF8() returns WritableBuffer<UChar>
2014-05-12 14:39:40 +02:00
Max Kellermann
1395794923
icu/Collate: initialize error_code
...
Fixes the broken "search" command.
2014-05-12 14:13:09 +02:00
Max Kellermann
073e9d06ec
mixer/software: keep attribute "volume" in the 0..100 range
...
The attribute must be 0..100 and not 0..1024. Previously, the code
was inconsistent.
2014-05-12 12:46:14 +02:00
Max Kellermann
fd1b04932a
InputStream: remove attribute "plugin"
2014-05-11 18:25:55 +02:00
Max Kellermann
d4b625b48e
InputStream: make various methods abstract
...
Replace InputPlugin attributes.
2014-05-11 17:14:49 +02:00
Max Kellermann
82337dec44
InputStream: add virtual destructor
...
Replaces the method Close().
2014-05-11 17:12:50 +02:00
Max Kellermann
f1d0700252
input/plugins: make InputStream the base class
...
Prepare for adding virtual methods.
2014-05-11 17:12:50 +02:00
Max Kellermann
e1383a2d8e
input/rewind: convert to class
2014-05-11 17:12:50 +02:00
Max Kellermann
6773adc771
InputStream: convert to class
2014-05-11 15:34:48 +02:00
Max Kellermann
0adcda387a
PlaylistCommands: remove redundant playlist_load_spl() call
...
This case is handled already by playlist_open_in_playlist_dir() (via
playlist_mapper_open()). And the call didn't work anyway.
2014-05-10 19:02:33 +02:00
Max Kellermann
fc1664d9fc
PlaylistMapper: use map_spl_utf8_to_fs()
...
Eliminates some overhead and some duplicate code, and fixes a serious
bug: the old code did not append the ".m3u" suffix, and thus the
"load" command was completely broken for stored playlists. D'oh!
2014-05-10 19:00:46 +02:00
Max Kellermann
70bd35abe2
decoder/OggUtil: allow skipping up to 32 kB after seek
...
Fixes missing song length on high-latency Opus files.
According to tests with 320 kbit/s opus files with 60ms packets, we
need to skip up to 29 kB.
2014-04-29 11:56:05 +02:00
Max Kellermann
bc2a1160b8
db/Count: implement grouping
2014-04-27 22:27:43 +02:00
Max Kellermann
75542e8f5d
db/Count: add constructor
2014-04-27 22:27:28 +02:00
Max Kellermann
fcb55f841a
DatabasePrint: move PrintSongCount() to Count.cxx
2014-04-26 22:59:21 +02:00
Max Kellermann
0efb67b51e
DeferredMonitor: fix race condition when using GLib event loop
...
Turns out the lock-free code using atomics was not thread-safe. The
given callback could be invoked by GLib before the source_id attribute
was assigned. This commit changes the DeferredMonitor class to use a
Mutex to block the event loop until source_id is assigned. This bug
does not exist in the 0.19 branch because it does not use the GLib
main loop anymore.
2014-04-26 22:11:23 +02:00
Max Kellermann
154e601f4e
db/Helpers: split library
2014-04-25 18:39:21 +02:00
Max Kellermann
4cca75b2e1
DatabasePrint: refactor variable/function names
2014-04-25 18:36:07 +02:00
Max Kellermann
6d616e55ae
LogInit: fix file descriptor leak in SIGHUP handler
2014-04-25 12:31:06 +02:00
Max Kellermann
95b1a640b6
DatabaseCommands: disallow "grouping" by the selected tag
...
Fixes assertion failure.
2014-04-25 11:28:17 +02:00
Max Kellermann
ecc12c9ba1
db/Helpers: move code to tag/Set.cxx
2014-04-24 18:32:23 +02:00
Max Kellermann
9e50993c13
db/Helpers: move TagSet to dedicated header
2014-04-24 18:18:26 +02:00
Max Kellermann
b32ec857b1
db/Helpers: use set::emplace()
2014-04-24 18:17:07 +02:00
Max Kellermann
0de42d56fc
DatabasePrint: eliminate printAllIn(), printInfoForAllIn()
2014-04-24 18:09:39 +02:00
Max Kellermann
6378ad69bb
DatabasePrint: merge adjacent client_printf() calls
2014-04-24 18:07:12 +02:00
Max Kellermann
9616e9bf3b
DatabasePrint: pass const SearchStats reference
2014-04-24 18:06:46 +02:00
Max Kellermann
7c8b73bffb
DatabasePrint: use unsigned counts
2014-04-24 18:06:26 +02:00
Max Kellermann
ae178c77bd
DatabaseCommands: "list" allows grouping
2014-04-24 11:38:49 +02:00
Max Kellermann
2220651253
TagBuilder: add method AddEmptyItem()
2014-04-24 11:38:48 +02:00
Max Kellermann
7fdd801479
DatabaseCommands: simplify the handle_list() argument parser
2014-04-24 11:38:48 +02:00
Max Kellermann
27002ad1ea
db/Helpers: "list" on album artist falls back to the artist tag
2014-04-24 10:48:52 +02:00
Max Kellermann
986dd2fac1
db/Helpers: move code to CheckUniqueTag()
2014-04-24 10:47:53 +02:00
Max Kellermann
3965b490a9
db/Helpers: use reference instead of pointer
2014-04-24 10:31:19 +02:00
Max Kellermann
b999e16406
SongFilter: convert argv to ConstBuffer
2014-04-24 09:59:59 +02:00
Max Kellermann
7fb9bebd46
util/{Const,Writable}Buffer: add front(), back(), pop_{front,back}(), shift()
2014-04-24 09:50:19 +02:00
Max Kellermann
3b8a9dd6ec
util/{Const,Writable}Buffer: add typedef reference_type
2014-04-24 09:47:59 +02:00
Max Kellermann
c9aec3e866
DatabaseCommands: fix crash on "list base"
...
The string "base" is understood by locate_parse_type(), but not by
listAllUniqueTags(). The special tag type LOCATE_TAG_BASE_TYPE causes
a crash in PrintUniqueTag().
2014-04-24 08:19:08 +02:00
Max Kellermann
1d1f8be260
DatabasePrint: convert "type" to unsigned
2014-04-24 08:18:41 +02:00
Max Kellermann
38e6c0ad3f
DatabaseCommands: clarify compatibility comment
2014-04-24 08:11:06 +02:00
Max Kellermann
7ecf4ad54d
input/nfs: add missing string.h include
...
For strrchr(). Fixes build failure.
2014-04-23 12:53:19 +02:00
Max Kellermann
1c02b4b9f4
release v0.18.10
...
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
iQIcBAABAgAGBQJTRoKFAAoJECNuiljG20UScmgP/3bXQLBVqnGdMEzJio9qfTqz
inqbuaR8FrOSQFT5ULpYYipcjiqxCpG2ooE2M083F3wXDHF8u+j0S84NEvHQjv0T
WvA5EOOeEJS0o0gREZb8onO8NVwH+f1r4x34PAc4QbSeROiAiJRPmfTOZBDTaQkZ
Fy4CGte9UqLvUG10Jxpn1DgcBBeoge9Ruzm+drBLHh53lAfKZH6z9u23htNc4PH0
WMN3/orL7KZNxMtX37zqQDhkbPv2RjCWc0JJ8yxBzw3r/qG53GkmCBsStub6wKIi
iPgkoKXii+FAlg1oRmvVNELmOUDjhnBj8+g7q6WgJGpYqdcSCQBRIBnPPRn6Tfw3
wS7MtGoH7M4yihOfeburIzN0JiD4dtcnA7CrA9ghWt3C0Hci9Q/eni7xHgAuJ7Gp
fD0aEGeaQiQZC8r1UYkgvPuc+CXpsjPcpoN2TlYwDJ3VPQcikHVqTUkJxf5rEGbL
h5K0jhW/TzgT0quozd50w52X/n5J76X8oEng08271OPMlF+6gawGA2/AeDsomRTp
n8OPVutpyaGE3gKGYLGKj3cEnP15tQyt3U0kiU+ccG7osEPXr8JU/A4fipqcrwnN
lwejiIKzfZBU68kwS+gtQLiBncT3oh5tEiLJNzYYpPCF0wkDYt2u/rhRxnVjRoXO
5B9PRaOPuJ5N+6O2hGNS
=qsUE
-----END PGP SIGNATURE-----
Merge tag 'release-0.18.10'
2014-04-10 13:49:20 +02:00
Marcello Desantis
95ac6071b9
decoder/sndfile: work around libsndfile bug on partial read
2014-04-09 23:58:56 +02:00
Weng Xuetian
3a4e667078
PlaylistEdit: don't interrupt playback when current song gets deleted
2014-04-09 23:10:14 +02:00
Max Kellermann
afdefefbe4
icu/Collate: fix memory leak in IcuCaseFold()
2014-04-09 20:09:34 +02:00
Max Kellermann
5360c0c588
IOThread: make io_thread_get() "const"
2014-04-05 09:26:45 +02:00
Max Kellermann
74a05a7f53
pcm/Neon: explicit rounding
...
Convert to 31 bit first, then right-shift with rounding to 16 bit.
2014-03-19 06:54:06 +01:00
Max Kellermann
a68acf5c66
util/ConstBuffer: add FromVoid(), ToVoid() to "void" specialization
...
Provide the full API.
2014-03-18 12:09:17 +01:00
Max Kellermann
ce18c36ed9
decoder/ffmpeg: handle unknown stream start time
2014-03-18 09:16:09 +01:00
Max Kellermann
8e39cf62e7
decoder/ffmpeg: pass AVSEEK_FLAG_ANY to av_seek_frame()
...
This corrects a major mistake from commit 724a59aa
- there was one
small thing that commit was supposed to do, and it failed.
AV_TIME_BASE is not a seek flag.
2014-03-18 09:10:36 +01:00
Max Kellermann
707d379b97
input/mms: move blocking I/O to thread
2014-03-16 11:48:46 +01:00
Max Kellermann
88a0a48b03
input/BufferedInputStream: new wrapper for moving plugin to thread
2014-03-16 10:26:40 +01:00
Max Kellermann
d51b90a880
thread/Thread: make the destructor non-virtual
...
The class does not have any virtual methods, and thus the (debug-only)
destructor does not need to be virtual.
2014-03-16 10:26:23 +01:00
Max Kellermann
e9912bcf8a
input/alsa: don't initialize "seekable=false", "size=-1"
...
These are the default values already.
2014-03-16 09:52:17 +01:00
Max Kellermann
b55e1dcb5e
pcm/Neon: make neon_x4_b() variadic
2014-03-16 09:30:50 +01:00
Max Kellermann
6f4775a8ee
pcm/Neon: apply bit shift during float->int conversion
...
Avoid multiplication. This is a speedup of 20%.
2014-03-16 09:05:30 +01:00
Max Kellermann
c7e2f558a0
input/curl: use CircularBuffer
...
Replaces its own weird buffering code.
2014-03-16 00:35:28 +01:00
Max Kellermann
328860c8ba
util/CircularBuffer: add method GetSpace()
2014-03-16 00:28:42 +01:00
Max Kellermann
89ac111853
util/CircularBuffer: add method GetSize()
2014-03-16 00:27:18 +01:00
Max Kellermann
3d4f588a7f
util/CircularBuffer: rename GetSize() to GetCapacity()
2014-03-15 23:12:20 +01:00
Max Kellermann
8f74bf314d
input/curl: add method CurlInputStream::Open()
2014-03-15 22:56:05 +01:00
Max Kellermann
0dd5ebbdbe
input/curl: move _seek() into the CurlInputStream class
2014-03-15 22:42:37 +01:00
Max Kellermann
2ae60767a3
input/curl: move _easy_init() into the CurlInputStream class
2014-03-15 22:38:46 +01:00
Max Kellermann
64f31f70f9
input/curl: pass std::string&& to HeaderReceived()
...
Code simplification.
2014-03-15 22:02:59 +01:00
Max Kellermann
23eacbd132
input/curl: move code to CurlInputStream methods
2014-03-15 20:43:37 +01:00
Max Kellermann
e9f16fca96
input/curl: rename "error" to "error_buffer"
2014-03-15 20:43:17 +01:00
Max Kellermann
3d30de91f3
input/curl: rename struct input_curl to CurlInputStream
2014-03-15 20:38:08 +01:00
Max Kellermann
f68d2f7c7f
system/fd_util: export fd_set_cloexec()
2014-03-15 20:03:31 +01:00
Max Kellermann
f660d30138
util/CircularBuffer: new buffer class
2014-03-15 18:35:52 +01:00
Max Kellermann
7d353bbe2a
configure.ac: always define _GNU_SOURCE on Linux
...
Make sure glibc gives us all features.
2014-03-15 18:27:09 +01:00
Max Kellermann
5696f91a1e
pcm/PcmFormat: ARM NEON optimizations for float->s16
...
This is nearly 4 times faster than the "portable" algorithm.
2014-03-15 11:41:01 +01:00
Max Kellermann
bb6ee71f08
pcm/PcmFormat: don't use WritableBuffer
...
The previous commit eliminated the need for that.
2014-03-14 23:23:16 +01:00
Max Kellermann
0d0642fd67
pcm/PcmFormat: instantiate FloatToInteger<S32>
...
.. instead of reusing FloatToInteger<S24> and converting from S24 to
S32 in-place.
2014-03-14 23:21:20 +01:00
Max Kellermann
08e6cf3dd2
pcm/PcmFormat: eliminate more duplicate code with templates
...
Refactor the conversion functions to classes and pass an instance to
the new function AllocateConvert().
2014-03-14 20:54:09 +01:00
Max Kellermann
044134eba0
pcm/PcmFormat: eliminate local variable "bits"
2014-03-14 20:53:22 +01:00
Max Kellermann
9fa6fa522e
pcm/PcmFormat: remove obsolete AllocateFromFloat() overload
2014-03-14 20:53:14 +01:00
Pete Beardmore
d0cd98a63a
MultipleOutputs: ensure input_audio_format is zero-initialised
...
-fixes SIGABRT when mpd is started from a previously paused state
-regression introduced by commit: f5a923b9d1
:
'OutputAll: convert to class, move instance to class Partition'
-input_audio_format was previously declared using the static modifier
ensuring it was zero-initialised by default
-the current default-initialised input_audio_format contains garbage at
runtime which allows the AudioFormat.IsDefined() 'fail fast' test in
MultipleOutputs::Update to pass and the SIGABRT follows in
AudioOutput::Open when passed the invalid input_audio_format struct
-switching AudioFormat.IsDefined() for AudioFormat.IsValid() is an
alternative workaround
2014-03-14 20:27:21 +01:00
Max Kellermann
88eae9dabb
command/{storage,file}: suppress bogus format warnings on WIN32
2014-03-14 08:58:43 +01:00
Max Kellermann
f2f1801c25
db/proxy: check connect error before initializing SocketMonitor
...
Fixes crash bug because mpd_connection_get_async() was called without
a connection.
2014-03-06 13:35:42 +01:00
Max Kellermann
a9e351e00d
decoder/gme: fix memory leak in container_scan()
2014-03-06 13:12:39 +01:00
Pete Beardmore
9da57e7458
PulseOutputPlugin: avoid locking mainloop object from within mainloop thread
...
-fixes regression introduced by:
'8d6fedf8177d0d2ced81e6d93d35c368b2ac69db [PATCH] Mixer: add class MixerListener'
-listener.OnMixerVolumeChanged() called GetVolume() which attempted to acquire
the lock but as per 'pa_threaded_mainloop_lock()' documentation:
This function may not be called inside the event loop thread. Events that are
dispatched from the event loop thread are executed with this lock held
-this patch seperates the underlying action of GetVolume() into a new
GetVolumeInternal() function, to be called only when the lock is already held, as
is the case for the listener.OnMixerVolumeChanged() call
2014-03-05 17:17:41 +00:00
Pete Beardmore
3a3fb98f79
PulseOutputPlugin: set icon name
2014-03-04 15:18:30 +00:00
Max Kellermann
503ed9c331
release v0.18.9
...
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
iQIcBAABAgAGBQJTEwdzAAoJECNuiljG20USkFYP/i1PaM7O20e2EPE7ELhffk1I
PEL6WiuCxfEHP+JbH/RPy/CdyKIqx3TTeaktXzOJmCcU+5fAgbpIwfK689ZjpE7Y
U+7aPfGudfjYTxM/bigEo+1XAIYWJCJ2IlopN0lRIZSquUm8rfxosqsNzJFrhwsK
40Ps36XdpYUA3z9dugyJjeKQETkjJa5Y55C1yml5RRUz+yPqyiPelm0dSlx3Ggce
KpmNZfp8g8/stwb08iw+qk+cNKP75eJwPdFmQrsc91QxP1oW7ERWhiICA0ZtqaNe
T0Ld5+wZ6uTJSztQiUsWrJYS1yKix5q1Za8tyFr3a9NPI+iIjsALXqU9k7zmZ6Id
GK0Xr9Noo1o80QeGkd60nJyCQXbEU/V0p9D/QiDVei+IvK6mbxF3y2gPA7wobgrC
KEDgsJZ+0fjmgdx+eb8ydg0uIwHrk04u0YKukUqA3bkNS/PUEICPqblcg8Spf89I
RMdjq2HFcpkaIwGvryfHIbTNUbonAziMzmiJ0WQA1FCD3x1WELvBf09GzAsUEoFX
Be0Co15rODOByo5ryZvSJv5BCr2RuCPwzNF+V26nMaKK7EloQWmbO0rpkRLVRk81
qo1JmElm6SyeE3kHqVW/NyrPxLtd7VngV+z9hXr95szUjCjMv/MK169r4jumLTex
RLyPDkhkQLDIijamhjfZ
=nX0n
-----END PGP SIGNATURE-----
Merge tag 'release-0.18.9'
2014-03-02 11:46:07 +01:00
Max Kellermann
47ea69233b
output/alsa: remove the obsolete Raspberry Pi workaround
...
Has been superseded by the previous commit.
2014-03-02 11:22:04 +01:00
Max Kellermann
a884e37de1
output/alsa: call snd_pcm_prepare() after snd_pcm_drop()
...
Don't wait for an optimistic write to fail. This is an improved
workaround for the infamous Raspberry Pi bug (see commit af991765
).
It works much better and comes without the negative side effects. The
old workaround is now obsolete.
2014-03-02 11:12:25 +01:00
Max Kellermann
0102a8665a
event/SignalMonitor: fix build failure due to missing signal.h include
2014-03-02 10:21:31 +01:00
Max Kellermann
d77c83f4ba
Main: auto-configure state file on Android
2014-03-02 00:35:37 +01:00
Max Kellermann
8cf3ac200b
Main: use getExternalStorageDirectory() for locating mpd.conf
2014-03-02 00:24:31 +01:00
Max Kellermann
2bf2f34b12
InputPlugin: allow init() to soft-fail
...
Add enum InputResult which is a tri-state. Input plugins may now fail
and just become unavailable.
2014-03-02 00:17:32 +01:00
Max Kellermann
7453c26ec4
thread/Name: fall back to prctl()
2014-03-01 23:58:59 +01:00
Max Kellermann
b059ba69d6
output/sles: support stereo
2014-03-01 23:05:44 +01:00
Max Kellermann
36ca57a54e
fs/StandardDirectory: add GetUserCacheDir()
...
Move code from CreateConfiguredDatabase() and add XDG support. This
implements an automatic Linux fallback for the setting "db_file" if
none was specified.
2014-03-01 22:51:51 +01:00
Max Kellermann
b8f1850bba
db/Configured: store database file in cache directory
...
Add class Context which wraps the Android/Java Context class and add a
JNI wrapper for method Context.getCacheDir().
2014-03-01 22:20:28 +01:00
Max Kellermann
5268f55344
java/File: add method ToAbsolutePath() returning AllocatedPath
2014-03-01 20:53:39 +01:00
Max Kellermann
e44c9a000d
android/Environment: fix copyright header
...
Stole my own code from another project :-)
2014-03-01 20:22:22 +01:00
Max Kellermann
07c1ba1f5e
TagId3: disable charset conversion without GLib
2014-03-01 19:18:50 +01:00
Max Kellermann
14168eadb2
Main: inline mpd_main() on Android
2014-03-01 19:09:31 +01:00
Max Kellermann
58771fc41c
Android: obtain music directory from Environment.getExternalStoragePublicDirectory()
2014-03-01 18:48:20 +01:00
Max Kellermann
1e06c66c77
java: new helper library for the Android port
2014-03-01 18:48:20 +01:00
Max Kellermann
c73771e3ce
Main: load mpd.conf from /sdcard/ on Android
...
Hard-coded path. Will be replaced soon.
2014-03-01 18:48:20 +01:00
Max Kellermann
350d2bcd6e
storage/Configured: fix fallback music directory
...
This was accidently disabled when storage plugins were introduced.
2014-03-01 18:45:09 +01:00
Max Kellermann
7ccc609da2
db/update/ExcludeList: make no-op if GLib is disabled
...
Quick hack to allow using the database without GLib (for Android).
2014-03-01 08:16:13 +01:00
Max Kellermann
4ba7427fa0
util/{Const,Writable}Buffer: add operator[]
2014-03-01 07:49:13 +01:00
Max Kellermann
9dc5335e3e
util/{Const,Writable}Buffer: add template specialization for "void"
...
Omit a few methods that are not applicable.
2014-03-01 07:37:58 +01:00
Max Kellermann
d333de1980
util/ConstBuffer: remove cast operator ConstBuffer<void>
...
This was bugged, because it did not scale the "size".
2014-03-01 07:37:20 +01:00
Max Kellermann
96afa8bd2b
command: add command "listfiles"
...
Lists files and directories. Supports storage plugins.
2014-03-01 06:25:57 +01:00
Max Kellermann
20cdab5546
DatabasePrint: move code to PrintDirectoryURI()
2014-02-28 08:21:34 +01:00
Max Kellermann
6765234b60
DatabasePrint: add API documentation
2014-02-28 08:17:25 +01:00
Max Kellermann
4c27898ce7
{Other,Database}Commands: contract declaration and assignment
2014-02-28 07:12:04 +01:00
Max Kellermann
d34ae0850c
AllCommands: "findadd" requires the "add" permission
2014-02-27 23:08:22 +01:00
Max Kellermann
e9a85aa4e4
db/simple: mount points
...
A SimpleDatabase instance can now "mount" other Database instances at
certain locations. This is used to use a new SimpleDatabase instance
for each storage mount (issued with the "mount" protocol command).
Each such instance has its own database file, stored in the directory
that is specified with the "cache_directory" option.
2014-02-27 20:49:13 +01:00
Max Kellermann
2a16fc74fd
CompositeStorage: add method GetMount()
2014-02-27 20:49:13 +01:00
Max Kellermann
f65254680a
db/update/Queue: use std::list instead of std::queue
...
The problem with std::queue is that it doesn't give us enough control.
The method Clear() is a kludge already, but soon, we'll need
filtering.
2014-02-27 20:49:13 +01:00
Max Kellermann
d64edb6896
db/simple: GetRoot() returns reference
2014-02-27 19:29:10 +01:00
Max Kellermann
3f9ad8e104
db/update/Service: allocate UpdateWalk dynamically
2014-02-27 18:04:24 +01:00
Max Kellermann
1c772ef699
Playlist: use the Error library to return errors
2014-02-27 17:27:23 +01:00
Max Kellermann
809b89b5af
Playlist*: move to queue/
2014-02-27 17:12:42 +01:00
Max Kellermann
681e012fb5
db/update: cancel the update on shutdown
2014-02-27 16:58:35 +01:00
Max Kellermann
3be36643a1
db/UpdateGlue: rename to Service.cxx
2014-02-27 16:14:10 +01:00
Max Kellermann
21e19ef69f
db/simple/Directory: eliminate method LookupSong()
...
Move to SimpleDatabase::GetSong() to give that method more control.
2014-02-26 20:10:31 +01:00
Max Kellermann
69a42fc901
db/simple/Directory: LookupDirectory() return remaining URI
...
Code can now be reused in LookupSong().
2014-02-26 19:50:46 +01:00
Max Kellermann
525789cd36
db/simple/Directory: make variables more local
2014-02-26 19:50:36 +01:00
Max Kellermann
367d660c08
db/Directory: add DEVICE_* documentation
2014-02-26 10:00:38 +01:00
Max Kellermann
4d73e4d605
db/simple: create dedicated directory
2014-02-26 09:17:41 +01:00
Max Kellermann
d86cc5bf42
db/Song: update API documentation for SimpleDatabasePlugin
2014-02-25 22:16:20 +01:00
Max Kellermann
5f262da09d
db/simple: remove unused method LookupDirectory()
2014-02-25 20:13:40 +01:00
Max Kellermann
82985a9488
db/simple: make internal methods "private"
2014-02-25 19:48:01 +01:00
Max Kellermann
afcdb65f80
db/simple: add comment
2014-02-25 18:17:54 +01:00
Max Kellermann
6b66e86f40
db/simple: move Create() up
2014-02-25 18:17:39 +01:00
Max Kellermann
cb145d290e
DirectorySave: save the flags "DEVICE_INARCHIVE" and "DEVICE_CONTAINER"
...
Helps avoid unnecessary archive scans during database update on a
fresh MPD process.
2014-02-25 18:16:19 +01:00
Max Kellermann
167803d2a1
DatabaseSave: increase DB_FORMAT version
2014-02-25 18:16:06 +01:00
Max Kellermann
58a981d2f6
DatabaseSave: add constant OLDEST_DB_FORMAT
2014-02-25 18:15:55 +01:00
Max Kellermann
8963cd1fab
DirectorySave: move code to ParseLine()
2014-02-25 18:15:43 +01:00
Max Kellermann
6526de024a
output/pulse: remove bogus g_free() call
2014-02-24 21:23:49 +01:00
Max Kellermann
55cd5a9a78
DirectorySave: save the mtime only if it is known
2014-02-24 21:17:06 +01:00
Max Kellermann
3f4c283203
icu/Collate: pass UErrorCode* to ucol_strcollUTF8()
...
Fixes crash after database update.
2014-02-24 21:05:44 +01:00
Max Kellermann
1e63e7c08b
icu/Collate: initialize the error code before ucol_open()
...
Fixes initialization failure.
2014-02-24 21:04:23 +01:00
Max Kellermann
33fc3af775
SongSort, ...: use libicu instead of GLib's g_utf8_*()
2014-02-24 20:39:37 +01:00
Max Kellermann
6d9739165e
output/httpd/client: eliminate GLib
2014-02-24 20:39:37 +01:00
Max Kellermann
7c5396ffb9
output/{shout,win32}: include cleanup
2014-02-24 20:34:09 +01:00
Max Kellermann
8319398957
output/openal: use usleep() instead of g_usleep()
2014-02-24 20:33:15 +01:00
Max Kellermann
a1509876de
output/pulse: use setenv() instead of g_setenv()
...
There is no advantage in using g_setenv().
2014-02-24 20:31:38 +01:00
Max Kellermann
0f2cf51f43
output/pulse: remove bogus g_free() call
2014-02-24 20:29:29 +01:00
Max Kellermann
e99ff4fdbc
decoder/gme: use free() instead of g_free()
2014-02-24 20:19:34 +01:00
Max Kellermann
25431f32a2
DecoderPlugin: free the container_scan() return value with delete[]
2014-02-24 20:19:34 +01:00
Max Kellermann
6ba1fe7568
UriUtil: support ftp:// URLs in uri_remove_auth()
2014-02-24 19:59:53 +01:00
Max Kellermann
bfae92e307
Main: use INT_MAX instead of G_MAXUINT
2014-02-24 18:57:03 +01:00
Max Kellermann
8fe004e98e
fs/Charset: use "UTF-8" instead of "utf-8" as the default value
...
The upper-case name seems to be the canonical one.
2014-02-23 22:03:40 +01:00
Max Kellermann
09e5f17b5d
Directory: use PathTraitsUTF8::Build() instead of g_strconcat()
2014-02-23 22:02:39 +01:00
Max Kellermann
db20e29af6
Directory: pass std::string&& to constructor
2014-02-23 22:02:02 +01:00
Max Kellermann
240a697f6c
encoder/opus: use xalloc() instead of g_malloc()
2014-02-22 13:40:11 +01:00
Max Kellermann
5a0dc808fd
decoder/opus: use new[] instead of g_malloc()
2014-02-22 13:37:36 +01:00
Max Kellermann
4dcf0b8ae0
first Android release
...
Finally, MPD runs on Android. For some small value of "runs". Very
much work left, too much to describe.
2014-02-22 01:39:08 +01:00
Max Kellermann
9574d11dc8
output/sles: new output plugin for Android
2014-02-22 00:18:46 +01:00
Max Kellermann
3d4689756c
Main: disable command-line parser and signal handlers on Android
2014-02-22 00:18:46 +01:00
Max Kellermann
90114514a9
LogBackend: use __android_log_print() on Android
2014-02-22 00:18:46 +01:00
Max Kellermann
7757e59e78
input/curl: include cleanup
2014-02-22 00:18:29 +01:00
Max Kellermann
b7a7953757
db/Directory: use "unsigned" for inode and device
...
This is what we get from the storage plugin via FileInfo. Fixes a
compiler warning on Mac OS X where dev_t appears to be signed.
2014-02-21 10:48:43 +01:00
Max Kellermann
30a82076ba
PlayerListener: new interface to replace GlobalEvents access
2014-02-21 10:22:35 +01:00
Max Kellermann
008723c62f
ConfigGlobal: eliminate function config_get_next_param()
2014-02-20 00:04:23 +01:00
Max Kellermann
04ba433ca6
Main: initialize Partition before Listener
...
Fixes nullptr dereference (regression by commit df5f9f4a
).
2014-02-20 00:04:23 +01:00
Max Kellermann
d884272ba8
Listen: eliminate local variable
2014-02-19 23:50:47 +01:00
Max Kellermann
e609c88334
Listen: reduce overhead for builds without systemd
2014-02-19 23:49:34 +01:00
Max Kellermann
e92a41fa3a
db/upnp: move plugin source to upnp directory
2014-02-19 23:46:00 +01:00
Max Kellermann
df5f9f4a15
Listen: add Partition reference
2014-02-19 23:43:36 +01:00
Max Kellermann
150443b014
DatabasePlugin: add FLAG_REQUIRE_STORAGE
...
Ignore the storage configuration if FLAG_REQUIRE_STORAGE is not set in
the DatabasePlugin.
2014-02-19 23:24:17 +01:00
Max Kellermann
9e36af7916
DatabasePlugin: add attribute "flags"
2014-02-19 23:24:15 +01:00
Max Kellermann
85b8675e7a
db/Interface: add attribute "plugin"
...
The new method IsPlugin() replaces the "is_simple" flag.
2014-02-19 23:17:21 +01:00
Max Kellermann
ae594ad92c
DatabasePlugin: split header
2014-02-19 22:54:52 +01:00
Max Kellermann
8d6fedf817
Mixer: add class MixerListener
...
Use a listener interface instead of GlobalEvents.
2014-02-19 21:40:14 +01:00
Max Kellermann
f4f8fa7c94
output/Init: pass AudioOutput references
2014-02-19 21:38:48 +01:00
Max Kellermann
fb5fbb8088
util/Tokenizer: relicense to BSD-2
2014-02-19 10:41:48 +01:00
Max Kellermann
e624171ba1
StickerCommands: include cleanup
2014-02-19 09:53:22 +01:00
Max Kellermann
0bbfb28992
output/httpd: move to dedicated directory
2014-02-19 09:22:08 +01:00
Max Kellermann
ee7bd695fd
Timer: move to output/
2014-02-19 09:22:08 +01:00
Max Kellermann
1cc17bfe7a
cue/CueParser: move to playlist/
2014-02-19 08:56:58 +01:00
Max Kellermann
e8789d7cb9
system/FatalError: remove GError support
2014-02-18 23:05:40 +01:00
Max Kellermann
0053cd0d0d
Main: disable inotify check without database
...
Fix build failure.
2014-02-18 21:47:01 +01:00
Max Kellermann
c32477a223
Merge branch 'v0.18.x'
2014-02-18 21:46:41 +01:00
Max Kellermann
5e1e92626c
event/SignalMonitor: unblock signals after fork
...
Fixes hanging child process in the "pipe" output plugin.
2014-02-18 19:13:50 +01:00
Max Kellermann
a0c25941a8
Thread/Util: use __NR_ioprio_set instead of SYS_ioprio_set
...
Bionic doesn't have the SYS_* macros.
2014-02-18 10:44:18 +01:00
Max Kellermann
5eb468bce0
Thread/Util: make SCHED_RESET_ON_FORK optional
...
Use it if it exists, but don't insist if the C library is poor
(e.g. Bionic/Android).
2014-02-18 10:43:24 +01:00
Max Kellermann
9b7f492c65
thread/Posix{Mutex,Cond}: disable "constexpr" on Android
...
Bionic's pthread declarations are non-literal.
2014-02-18 09:54:35 +01:00
Max Kellermann
6eda79d02d
system/EPollFD: add epoll_create1() fallback for Android
2014-02-18 09:54:35 +01:00
Max Kellermann
e10a8d95f6
PlaylistRegistry: disable the "pls" plugin without GLib
2014-02-18 09:18:42 +01:00
Max Kellermann
97f2be348c
LogInit: disable SetLogCharset() without GLib
2014-02-18 09:18:42 +01:00
Max Kellermann
2b21312b36
util/StringUtil: add StringEndsWith()
...
Replaces g_str_has_suffix().
2014-02-18 09:18:42 +01:00
Max Kellermann
3a818b6d45
SongFilter: disable g_utf8_casefold() without GLib
...
Temporary hack for the experimental no-GLib build.
2014-02-18 09:18:42 +01:00
Max Kellermann
1709ab6810
fs/TextFile: use custom allocation instead of GString
2014-02-17 23:04:10 +01:00
Max Kellermann
ce925ba56f
fs/Charset: disable if GLib is disabled
2014-02-17 22:48:26 +01:00
Max Kellermann
4ad14f6a2c
TagId3: use xstrdup() instead of g_strdup()
2014-02-17 22:42:54 +01:00
Max Kellermann
579e48edbb
util/StringUtil: add function Strip()
...
Replaces g_strstrip().
2014-02-17 22:37:43 +01:00
Max Kellermann
6a08f2281a
TagString: disable UTF-8 validation if GLib is disabled
2014-02-17 22:33:10 +01:00
Max Kellermann
91729437a0
Main: initialize Database before Storage
2014-02-17 22:14:00 +01:00
Max Kellermann
3af7af0b8f
Main: move code to InitDatabaseAndStorage()
2014-02-17 22:13:53 +01:00
Max Kellermann
1ddd00433e
db/Configured: disallow both "db_file" and "database"
...
This is misconfiguration, and MPD should abort.
2014-02-17 22:13:53 +01:00
Max Kellermann
de160bb2d1
Main: move code to db/Configured.cxx
2014-02-17 22:13:53 +01:00
Max Kellermann
ff62b6742b
Main: check if database exists before attempting to close it
...
Fixes nullptr dereference.
2014-02-17 22:13:53 +01:00
Max Kellermann
6da0af94df
db/DatabaseSimple: remove obsolete header
2014-02-17 20:44:03 +01:00
Max Kellermann
df9667a497
StorageCommands: add command "unmount"
2014-02-12 23:48:08 +01:00
Max Kellermann
e3e2ad4ae5
CompositeStorage: fix tree walk in Directory::Unmount()
2014-02-12 23:48:08 +01:00
Max Kellermann
ace4ba3171
StorageCommands: emit IDLE_MOUNT on successful "mount"
...
Add the new idle event to Idle.hxx/Idle.cxx.
2014-02-12 23:06:47 +01:00
Max Kellermann
0935ae330a
StorageCommands: add command "listmounts"
2014-02-12 21:47:59 +01:00
Max Kellermann
d05ae4b444
util/HugeAllocator: relicense to BSD-2
2014-02-10 13:32:50 +01:00
Max Kellermann
73b0610d89
PlaylistSong: copy the "real" URI
...
Playback with some decoder plugins was broken because the Queue's
DetachedSong instances did not have the "real" URI (the mapped path).
2014-02-10 11:00:49 +01:00
Max Kellermann
73aec9ce63
StorageCommands: expose the "mount" command
2014-02-09 11:07:08 +01:00
Max Kellermann
a9fefcf600
Main: wrap the Storage instance in CompositeStorage
2014-02-09 11:07:08 +01:00
Max Kellermann
59ce67e2e5
CompositeStorage: new Storage implementation
...
This is the backend for the upcoming "mount" command.
2014-02-09 10:47:29 +01:00
Max Kellermann
2182209a8a
db/update/Walk: disable FindAncestorLoop() if device/inode==0
2014-02-09 10:47:29 +01:00
Max Kellermann
e29a8b3a9c
db/update/Walk: document FindAncestorLoop()
2014-02-09 10:46:39 +01:00
Max Kellermann
ace3f37af4
db/update/Walk: rename find_inode_ancestor() to FindAncestorLoop()
2014-02-09 10:46:39 +01:00
Max Kellermann
37b6899660
Main: move code to storage/Configured.cxx
2014-02-09 08:09:47 +01:00
Max Kellermann
570b12ec13
Idle: error out when unrecognized idle event was specified
...
Implements the error checks missing in commit 0bad8406
2014-02-09 08:07:48 +01:00
Max Kellermann
ac286ef734
OtherCommands: remove unnecessary nullptr check
2014-02-09 08:07:43 +01:00
Max Kellermann
b3663b5da2
storage/nfs: new storage plugin
2014-02-08 14:24:47 +01:00
Max Kellermann
d761d8b168
input/nfs: move nfs_domain to lib/nfs/Domain.cxx
2014-02-08 14:24:47 +01:00
Max Kellermann
fe7c6fee34
ArchivePlugin: pass Path to open()
2014-02-08 13:25:44 +01:00
Max Kellermann
9906daeca7
ArchivePlugin: rename struct archive_plugin to ArchivePlugin
2014-02-08 13:22:13 +01:00
Max Kellermann
3fdc678aae
Main: support arbitrary storage plugins
2014-02-08 00:04:29 +01:00
Max Kellermann
a0088ccce1
storage: add struct StoragePlugin and a plugin registry
2014-02-07 23:46:15 +01:00
Max Kellermann
be081929f4
storage/local: remove utf8 path from constructor
...
Build the UTF-8 version of the path automatically in the constructor.
2014-02-07 23:41:06 +01:00
Max Kellermann
b0b086d473
Main: move storage initialization to InitStorage()
2014-02-07 23:37:39 +01:00
Max Kellermann
6798af52b6
Mapper: obtain music directory from Storage
...
Eliminate duplicate variable.
2014-02-07 23:34:29 +01:00
Max Kellermann
4d5ebafa6d
Main: check the music directory
...
Move call from Mapper.cxx.
2014-02-07 23:29:20 +01:00
Max Kellermann
ec8873b178
Mapper: move check_directory() to the filesystem library
2014-02-07 23:25:47 +01:00
Max Kellermann
c45f205593
Main: chop separators from music directory
...
Move call from Mapper.cxx.
2014-02-07 23:13:24 +01:00
Max Kellermann
027b2063ba
Mapper: remove unused functions
2014-02-07 23:03:25 +01:00
Max Kellermann
b531c4c2fe
OtherCommands: use Storage::MapUTF8() instead of Mapper.cxx
2014-02-07 22:58:21 +01:00
Max Kellermann
4b010df99e
Main: create Storage instance in glue_mapper_init()
...
Don't use the obsolete Mapper library to create it.
2014-02-07 22:54:18 +01:00
Max Kellermann
5e4dd4be9c
Main: allow playlist directory without music directory
2014-02-07 22:39:17 +01:00
Max Kellermann
f947274626
InotifyUpdate: use class Storage instead of Mapper.cxx
2014-02-07 22:30:40 +01:00
Max Kellermann
f6939f71a7
InotifyUpdate: use the root name instead of mapper_get_music_directory_fs()
...
The root WatchDirectory instance already contains the music directory,
and we don't need to fetch it again.
2014-02-07 22:30:01 +01:00
Max Kellermann
25aa17ad89
InotifyUpdate: move functions into the WatchDirectory class
2014-02-07 22:24:26 +01:00
Max Kellermann
05ee057db5
InotifyUpdate: remove unnecessary #ifdefs
2014-02-07 22:17:27 +01:00
Max Kellermann
297e2747f3
PlaylistMapper: use class Storage instead of Mapper.cxx
2014-02-07 21:44:50 +01:00
Max Kellermann
77de233117
Playlist{Any,Registry,Mapper}: move functions to PlaylistStream.cxx
2014-02-07 21:30:49 +01:00
Max Kellermann
02b67edaf5
PlaylistSong: include cleanup
2014-02-07 21:30:03 +01:00
Max Kellermann
8549ccfd8c
playlist/CloseSongEnumerator: new wrapper class
...
Simplifies a lot of code, because we don't need to return both the
SongEnumerator and the InputStream.
2014-02-07 20:27:24 +01:00
Max Kellermann
ffd16b55a6
StoragePlugin: add method MapToRelativeUTF8()
...
Replaces map_to_relative_path() from Mapper.cxx.
2014-02-07 19:09:28 +01:00
Max Kellermann
d744c997d8
fs/Traits: add function Relative()
...
Move code from Path::RelativeFS() and make it generic.
2014-02-07 19:08:51 +01:00
Max Kellermann
6b421cc354
DecoderPlugin: pass Path instance to file_decode() and scan_file()
2014-02-07 18:52:19 +01:00
Max Kellermann
37ec29b225
Mapper: remove unused function map_song_fs()
2014-02-07 18:51:19 +01:00
Max Kellermann
ca7f6a26b5
DecoderThread: use only DetachedSong::GetRealURI()
...
Don't use the mapper - all DetachedSong instances we get have already
been mapped.
2014-02-07 18:50:07 +01:00
Max Kellermann
9b69d22d7e
DecoderThread: pass Path object around for local song files
2014-02-07 18:45:11 +01:00
Max Kellermann
4ab4cf8532
SongUpdate: pass Storage to UpdateFileInArchive()
2014-02-07 18:44:47 +01:00
Max Kellermann
3341b282b7
PlaylistSave: use DetachedSong::GetRealURI() in playlist_print_song()
...
The DetachedSong instance already knows its own absolute path, and
there is no need to ask the mapper again.
2014-02-07 18:42:16 +01:00
Max Kellermann
bb3b836dbb
FileCommands: support remove database files
2014-02-07 18:41:42 +01:00
Max Kellermann
1873c67540
FileCommands: use Storage::MapFS() instead of map_uri_fs()
2014-02-07 18:38:10 +01:00
Max Kellermann
8fd8f23a6b
FileCommands: move code to read_file_comments()
2014-02-07 18:33:43 +01:00
geneticdrift
f225051348
fixed possible format_context not closed in ffmpeg_decode
2014-02-07 12:07:43 +01:00
Max Kellermann
b2e3fdef0f
storage/local: hide the class declarations
...
Hide inside CreateLocalStorage().
2014-02-07 01:11:52 +01:00
Max Kellermann
c13810ebaa
Mapper: move map_song_detach() to db/DatabaseSong.cxx
...
Use Storage::MapUTF8() internally, don't use global variables.
2014-02-07 00:42:14 +01:00
Max Kellermann
19a982cf69
Mapper: convert IsInDatabase() check to assertion in map_song_detach()
2014-02-07 00:42:14 +01:00
Max Kellermann
327cbf48f5
pcm/FallbackResampler: add missing ConstBuffer<T>::ToVoid() call
2014-02-06 23:48:01 +01:00
geneticdrift
0f1f509be7
fixed leaked LocalDirectoryReader *const reader in UpdateWalk::UpdateDirectory
2014-02-06 23:08:24 +01:00
Max Kellermann
c8f0c7e9ed
*/smbclient: protect all libsmbclient calls with a mutex
...
libsmbclient is not thread-safe nor reentrant. We must protect all
function calls with a global mutex, unfortunately.
2014-02-06 22:19:59 +01:00
Max Kellermann
a7989077ab
neighbor/smbclient: move smbclient_domain to lib/smbclient/Domain.cxx
2014-02-06 22:12:50 +01:00
Max Kellermann
0a0659d737
mixer/Plugin: pass AudioOutput reference to init()
...
Passing a void pointer is unsafe.
2014-02-06 21:10:12 +01:00
Max Kellermann
b6df4680df
MixerPlugin: convert function pointers to Mixer virtual methods
2014-02-06 20:52:33 +01:00
Max Kellermann
e04090b477
Mixer: delete the implicit copy constructor
2014-02-06 20:52:25 +01:00
Max Kellermann
c9fb6f7bdb
Mixer: make the constructor "explicit"
2014-02-06 20:52:25 +01:00
Max Kellermann
ad6b05ae17
mixer/software: use IgnoreError()
2014-02-06 20:52:25 +01:00
Max Kellermann
29b18d9ab7
SongUpdate: use the Storage interface, support remote files
...
This commit finally allows the database update to scan remote files,
e.g. using the smbclient storage plugin. However, it is not yet
possible to configure that, therefore the feature is not accessible
yet.
2014-02-06 19:06:08 +01:00
Max Kellermann
ad309cdeae
SongUpdate: make variables more local
2014-02-06 18:58:56 +01:00
Max Kellermann
e4322a716c
input/nfs: new plugin using libnfs
2014-02-06 18:37:27 +01:00
Max Kellermann
957beeb0e9
storage/smbclient: Storage implementation using libsmbclient
2014-02-06 07:19:14 +01:00
Max Kellermann
522ad4cca6
Instance: narrow "storage" to class Storage
2014-02-06 07:19:14 +01:00
Max Kellermann
dc76b24e5f
storage/local: OpenDirectory() returns StorageDirectoryReader*
2014-02-05 19:35:41 +01:00
Max Kellermann
e3e3053f32
storage/Interface: explicitly delete copy constructors
2014-02-05 19:30:58 +01:00
Max Kellermann
c8c3f20840
storage/local: move to src/storage/plugins/
2014-02-05 19:26:21 +01:00
Max Kellermann
f6682aae77
db/update: include StorageInterface.hxx instead of LocalStorage.hxx
2014-02-05 19:26:18 +01:00
Max Kellermann
0ba1b73395
storage: add abstract interface
...
Prepare for the plugin interface.
2014-02-05 18:53:51 +01:00
Max Kellermann
4c995eb498
db/UpdateWalk: move LocalStorage to Instance
...
Keep only a reference.
2014-02-05 17:58:13 +01:00
Max Kellermann
144cfe70bf
db/update/Remove: initialize attribute "removed_song"
...
Fixes bogus assertion failure.
2014-02-05 17:58:13 +01:00
Max Kellermann
855f26c43d
Mixer: use reference instead of pointer for MixerPlugin
2014-02-05 17:25:47 +01:00
Max Kellermann
f86e159536
Mixer: rename struct mixer_plugin to MixerPlugin
2014-02-05 17:22:34 +01:00
Max Kellermann
243c4e1e83
Main: remove unused global variable "main_thread"
2014-02-05 17:04:16 +01:00
Max Kellermann
9ae7f186bc
LocalStorage: new API abstracting filesystem walk
...
Prepare to make this a new plugin API, for example to use a SMB share
for the music_directory.
2014-02-05 10:04:03 +01:00
Max Kellermann
f8d114be42
db/UpdateIO: add "pure" attributes
2014-02-05 10:04:03 +01:00
Max Kellermann
2c70251df1
db/UpdateGlue: relax assertion
...
Fixes assertion failure when update gets launched during MPD startup.
2014-02-05 10:04:03 +01:00
Max Kellermann
d380db25be
Instance: add attribute "event_loop"
...
Replaces global variable "main_loop".
2014-02-05 00:09:36 +01:00
Max Kellermann
e8938b1069
MixerPlugin: add EventLoop& init() parameter
2014-02-05 00:02:02 +01:00
Max Kellermann
4a28333039
event/Loop: remove the dummy constructor argument
2014-02-05 00:00:03 +01:00
Max Kellermann
ff665b37cb
db/DatabaseListener: add method OnDatabaseSongRemoved()
...
Decouples db/update/Remove.cpp from global variables.
2014-02-04 19:53:37 +01:00
Max Kellermann
ce73843014
db/proxy: include cleanup
2014-02-04 19:53:12 +01:00
Max Kellermann
bae6f653d1
Instance: merge DatabaseModified() into OnDatabaseModified()
2014-02-04 19:17:22 +01:00
Max Kellermann
eec6d09959
db/update/Service: use DatabaseListener instead of Instance
...
Don't use the global variable "instance".
2014-02-04 18:54:54 +01:00
Max Kellermann
c5fa8ed321
db/update/Service: use EventLoop::IsInside()
...
Don't use the global variable "main_thread".
2014-02-04 18:54:45 +01:00