Max Kellermann
8c01004219
system/FatalError: move code to Abort()
2013-10-30 23:41:02 +01:00
Max Kellermann
8555b65c50
*: update copyright year to 2013
2013-10-30 23:37:06 +01:00
Max Kellermann
304fa5ecac
ClientList: disconnect all clients in destructor
...
Fixes assertion failure.
2013-10-30 23:12:45 +01:00
Max Kellermann
88e630170e
mixer/software: fix double free bug
2013-10-30 23:12:45 +01:00
Max Kellermann
da8bdd62c8
PlaylistState: ignore "mixrampdelay:nan"
...
mixramp_delay==nan() causes severe problems with cross-fading.
2013-10-30 22:33:02 +01:00
Max Kellermann
54abeab80b
increase default buffer size to 4 MB
...
2 MB was too small for cross-fading a 24 bit file. Increasing to 4 MB
is still not too large for weak machines, but is enough for
cross-fading.
2013-10-30 21:46:40 +01:00
Max Kellermann
1dc8a9f0e7
db/proxy: remove obsolete #undefs
2013-10-30 20:51:41 +01:00
Max Kellermann
a62d54425c
db/proxy: auto-reconnect
2013-10-30 19:50:22 +01:00
Max Kellermann
90c899407a
ReplayGainInfo: use large negative value instead of infinity
...
The last piece to allow -ffast-math.
2013-10-30 18:01:45 +01:00
Max Kellermann
55868eecd0
PlayerCommands: show CrossFade/MixRamp only if enabled
2013-10-30 17:49:47 +01:00
Max Kellermann
50dc98367c
PcmMix: use negative value instead of NaN for addition
...
Avoid NaN to allow -ffast-math.
2013-10-30 17:23:49 +01:00
Max Kellermann
c4d3030d24
CrossFade: eliminate NaN from mixramp_interpolate()
...
Use a boolean flag instead.
2013-10-30 17:20:34 +01:00
Max Kellermann
c6f101884b
CrossFade: use negative value for invalid MixRamp overlap
...
Avoid NaN to allow -ffast-math.
2013-10-30 17:20:12 +01:00
Max Kellermann
a65f63747b
CrossFade: use negative value for invalid mixramp_delay
...
Avoid NaN to allow -ffast-math.
2013-10-30 16:50:34 +01:00
Max Kellermann
a21edddf27
CrossFade: remove obsolete API documentation
2013-10-30 16:45:02 +01:00
Max Kellermann
a88c23b6e8
Main: check the g_get_user_special_dir() result
...
Fixes crash.
2013-10-30 16:14:44 +01:00
Max Kellermann
7bb3987acc
db/proxy: return server errors using "enum ack"
2013-10-30 16:04:21 +01:00
Max Kellermann
6a147a17af
db/proxy: pass search/find to remote MPD
2013-10-30 10:00:57 +01:00
Max Kellermann
2b7529e905
db/proxy: pass SongFilter to the remote MPD in VisitUniqueTags()
2013-10-30 09:40:23 +01:00
Max Kellermann
1ed321f964
db/proxy: add missing nullptr check
2013-10-30 09:37:20 +01:00
Max Kellermann
2aee1b86f3
SongFilter: add special keyword "base"
...
Restores the features from the previous draft commands "findin" /
"searchin".
2013-10-29 21:13:40 +01:00
Max Kellermann
b5fc21b9f4
Revert "command: new commands "findin", "searchin" with base URI"
...
This reverts commit a577944ab5
.
Will be replaced by new options for the old commands "search" and
"find".
2013-10-29 21:13:40 +01:00
Max Kellermann
44581dbef5
util/UriUtil: add uri_is_child_or_same()
2013-10-29 21:13:40 +01:00
Jean-Francois Dockes
205448c1e8
db/proxy: enable song matching
2013-10-29 20:58:35 +01:00
Jean-Francois Dockes
2d11c6ab29
SongFilter: make SongFilter::Item class definition public
2013-10-29 20:47:52 +01:00
Max Kellermann
6859c22b69
SongFilter: "any" does not match file name
...
According to the protocol documentation, matching the file name was
wrong. This removes some awkward special-case code.
2013-10-29 20:40:55 +01:00
Max Kellermann
2d5413fc3b
DatabaseSelection: use std::string
2013-10-29 20:36:52 +01:00
Max Kellermann
a6aa0e4cbf
SongFilter: use std::string
2013-10-29 19:39:17 +01:00
Max Kellermann
163848ab3b
fd_util: avoid unnecessary fcntl() calls
2013-10-29 13:02:53 +01:00
Max Kellermann
03747ba93e
PlayerControl: move attributes to struct CrossFadeSettings
2013-10-29 00:14:27 +01:00
Max Kellermann
095c390df7
FilterRegistry: add "pure" attribute
2013-10-29 00:05:04 +01:00
Max Kellermann
20597b3632
*: use nullptr instead of NULL
2013-10-28 23:58:17 +01:00
Max Kellermann
4728735acf
decoder/dsf: don't play junk at the end of the "data" chunk
2013-10-28 23:47:25 +01:00
Max Kellermann
9dcbd005f0
decoder/dsf: add range check
2013-10-28 23:41:51 +01:00
Max Kellermann
0ad2eb34c7
decoder/dsdlib: add class DsdUint64
...
Merge lots of duplicate code.
2013-10-28 23:29:23 +01:00
Max Kellermann
0e8a15e813
decoder/dsdlib: include cleanup
2013-10-28 23:26:37 +01:00
Max Kellermann
5b0d6a59cf
decoder/dsdlib: move API documentation to header
2013-10-28 23:26:16 +01:00
Max Kellermann
fd3dc7e5fb
decoder/dsdlib: convert struct dsdlib_id to a class
2013-10-28 23:12:48 +01:00
Max Kellermann
12e9b7eafa
PcmFormat: move definitions to struct SampleTraits
2013-10-28 21:29:36 +01:00
Max Kellermann
de1261ba28
MusicChunk: return WritableBuffer
2013-10-28 17:10:12 +01:00
Max Kellermann
5ee5a89a7f
MusicChunk: use uint8_t instead of char
2013-10-28 17:08:14 +01:00
Max Kellermann
1ad2475f9e
DecoderControl: convert mutex and client_cond to a reference
...
Share the Mutex between the DecoderThread and the PlayerThread. This
simplifies synchronization between the two threads and fixes a freeze
problem: while the PlayerThread waits for the DeocderThread, it cannot
answer requests from the main thread, and the main thread will block
until the DecoderThread finishes.
2013-10-28 10:22:05 +01:00
Max Kellermann
5b5675cc12
player_control: rename to PlayerControl
2013-10-28 10:12:33 +01:00
Max Kellermann
e699f6781e
decoder_control: rename to DecoderControl
2013-10-28 10:09:21 +01:00
Oddegamra
5f13c1cd9c
output/httpd: accept icy-metadata with and without space
...
Some, or most, Win32 audio players will pass "icy-metadata:1" to
streaming servers. MPD expects a space between ":" and "1" at this
point, and thus does not send any stream metadata. This applies to
foobar2k and Winamp, for example.
According to forums.radiotoolbox.com/viewtopic.php?t=74 not having
a space there is expected behavior, so maybe MPD could accept
both forms to determine if metadata should be sent or not.
2013-10-26 16:32:00 +02:00
Max Kellermann
a577944ab5
command: new commands "findin", "searchin" with base URI
2013-10-26 16:13:35 +02:00
Max Kellermann
17ec3b0c2d
FileCommands: "readcomments" understands APE and ID3v2 tags
...
Implements Mantis ticket 3843.
2013-10-26 16:04:29 +02:00
Max Kellermann
fb75137540
FileCommands: fix wrong control character check in IsValidValue()
...
Check was the wrong way around, and made all valid values invisible.
2013-10-26 16:04:06 +02:00
Max Kellermann
6f87164ad6
ApeTag: support multiple values per name
2013-10-26 16:00:05 +02:00
Max Kellermann
a4d82cfe1e
ApeTag: move code to ForEachValue()
2013-10-26 15:57:09 +02:00
Max Kellermann
9f21eee2ec
ApeTag: simplify the "recognized" flag
2013-10-26 15:52:49 +02:00
Max Kellermann
a40246d312
TagFile: use Path instead of const char *
2013-10-26 15:38:29 +02:00
Max Kellermann
4a5aad0948
PlayerControl: initialize tagged_song in constructor
2013-10-26 15:37:49 +02:00
Max Kellermann
85ae7e9c9a
DecoderControl: move code/attributes to new class MixRampInfo
2013-10-26 14:19:34 +02:00
Max Kellermann
2098b94b47
DecoderThread: move code to DecoderControl::CycleMixRamp()
2013-10-26 14:12:10 +02:00
Max Kellermann
59ad6265a1
DecoderControl: add MixRamp getters
2013-10-26 14:08:09 +02:00
Max Kellermann
067572c6dd
CrossFade: reimplement mixramp_interpolate() without strtok()
...
Don't require a writable string, and don't modify it.
2013-10-26 13:53:32 +02:00
Max Kellermann
7f03f68fcc
CrossFade: apply coding style
2013-10-26 13:53:08 +02:00
Max Kellermann
b5e31c89c0
CrossFade: merge "return" statements using "break"
2013-10-26 13:49:15 +02:00
Max Kellermann
e898400fbd
CrossFade: use nullptr instead of NULL
2013-10-26 13:49:15 +02:00
Max Kellermann
3ac7de7a22
util/NumberParser: add ParseFloat()
2013-10-26 13:49:15 +02:00
Max Kellermann
ade66e7ece
util/NumberParser: indent
2013-10-26 13:49:15 +02:00
Max Kellermann
17dc638c18
command: new command "readcomments" lists arbitrary file tags
2013-10-25 19:35:40 +02:00
Max Kellermann
d6e28c42e5
ReplayGainInfo: refactor to a class
2013-10-25 19:12:46 +02:00
Max Kellermann
6d475c40de
ReplayGainInfo: use CamelCase for struct name
2013-10-25 19:12:38 +02:00
Max Kellermann
ed7891bf01
ReplayGainConfig: add "pure" attributes
2013-10-25 19:12:29 +02:00
Max Kellermann
e17da71a70
output/httpd: support HEAD requests
2013-10-25 00:32:48 +02:00
Max Kellermann
610bef9ff5
output/httpd: remove bogus assertion
2013-10-25 00:26:02 +02:00
Max Kellermann
961c7d0f78
OtherCommands: re-add the "volume" command
...
This command was removed by commit 206392ad
(MPD 0.16), even though it
was been proven useful for some very simple clients. On request, I
add it to the protocol again.
2013-10-25 00:20:36 +02:00
Max Kellermann
c1ba47beee
MixerAll, Volume: add "pure" attributes
2013-10-25 00:15:55 +02:00
Max Kellermann
ac8e5be9f4
decoder/opus: support replay gain
...
Parse the R128_TRACK_GAIN comment string.
2013-10-24 23:56:06 +02:00
Max Kellermann
c76952534e
decoder/Opus: implement seeking
2013-10-24 23:26:58 +02:00
Max Kellermann
f0060718de
decoder/opus: provide time stamps
...
Call decoder_timestamp(). This is not necessary currently, but will
be as soon as we implement seeking.
2013-10-24 23:26:54 +02:00
Max Kellermann
982ab9e496
decoder/opus: show song duration during playback
...
This requires seeking to the end-of-stream, checking its granulepos,
and then seeking back to the previous file position. We do this only
for local files.
2013-10-24 23:26:46 +02:00
Max Kellermann
b74bcf2274
decoder/opus: call ogg_stream_reset() in OggSeekPageAtOffset()
2013-10-24 23:23:23 +02:00
Max Kellermann
dc328e0c4a
decoder/opus: move code to OggSeekPageAtOffset()
2013-10-24 20:40:23 +02:00
Max Kellermann
92c85bd20d
decoder/opus: move SeekFindEOS() to OggFind.cxx
2013-10-24 20:33:12 +02:00
Max Kellermann
f629eb8cb2
decoder/opus: make opus_sample_rate constexpr
2013-10-24 20:14:47 +02:00
Max Kellermann
e4f41ff61d
decoder/opus: use std::copy_n() instead of memcpy()
2013-10-24 20:06:50 +02:00
Max Kellermann
dae6ecb680
decoder/opus: support all core tag names
2013-10-24 20:01:14 +02:00
Max Kellermann
a57a7b1a76
decoder/opus: move code to ParseOpusTagName()
2013-10-24 20:01:14 +02:00
Max Kellermann
03073b366b
decoder/opus: use delete[] for the OpusReader::ReadString() result
2013-10-24 20:01:14 +02:00
Max Kellermann
1bd8a9e744
DecoderAPI: add "pure" attributes
2013-10-24 20:01:05 +02:00
Max Kellermann
0a5c991ab5
decoder/wavpack: move variable declarations
2013-10-23 23:20:55 +02:00
Max Kellermann
93deb84499
input_stream: rename struct to InputStream
2013-10-23 23:12:02 +02:00
Max Kellermann
c4d4011c63
InputInternal: remove obsolete library
2013-10-23 23:10:27 +02:00
Max Kellermann
3d12f8d246
UriUtil: uri_remove_auth() returns std::string
2013-10-23 21:58:44 +02:00
Max Kellermann
f1027ed198
InputStream: add method Rewind()
2013-10-23 21:58:44 +02:00
Max Kellermann
fe3c5e4e8e
DecoderThread: remove unused function deconst_plugin()
2013-10-23 21:57:28 +02:00
Max Kellermann
d110131ad6
Playlist: refresh new tags after database update
...
Fixes regression from commit e96779d
.
2013-10-22 01:05:29 +02:00
Max Kellermann
10bc1a9acc
decoder/flac: fix tag name comparison
2013-10-22 01:05:09 +02:00
Max Kellermann
3f899f83ff
Playlist*, Queue: use GetDatabase() overload without Error
...
Don't use IgnoreError() when there's an overload that does not try to
give us one.
2013-10-22 00:59:56 +02:00
Max Kellermann
fc05768374
Queue: add method ModifyAtPosition()
2013-10-22 00:59:56 +02:00
Max Kellermann
03b57df630
Queue: ModifyAtOrder() does not increment version
...
Leave that to the caller, allowing it to modify multiple items at a
time.
2013-10-22 00:59:56 +02:00
Max Kellermann
4de3b6dc80
Partition: add method DatabaseModified()
2013-10-22 00:59:55 +02:00
Max Kellermann
c7bbfef19a
UpdateRemove: include cleanup
2013-10-22 00:59:55 +02:00
Max Kellermann
7f1130b52b
DecoderList: fix the decoder_plugin_from_mime_type() return value
2013-10-22 00:59:55 +02:00
Max Kellermann
2d696f46c3
PlaylistEdit: compare Song URIs in DeleteSong()
...
Fixes purging deleted songs from the queue after update. Fixes
regression from commit e96779d
.
2013-10-22 00:13:39 +02:00
Max Kellermann
2f43e4bc66
Playlist: copy stream tags from the PlayerThread
...
Finally restores an important feature that has been broken for several
months when the PlayerThread started working with Song copies instead
of pointers to the Queue's Song instances (commit e96779d
).
2013-10-22 00:02:21 +02:00
Max Kellermann
f8c23488c9
Song: add method ReplaceTag()
2013-10-21 23:53:30 +02:00
Max Kellermann
1e2cda9239
Partition: add methods TagModified(), SyncWithPlayer()
...
Move code from class Instance.
2013-10-21 23:40:52 +02:00
Max Kellermann
20cba9e89f
Song: pass reference to song_equals()
2013-10-21 23:19:15 +02:00
Max Kellermann
f6d67ac260
DecoderThread: simplify the decoder lookup loop
...
Merge the two loops into one, and eliminate the GSList.
2013-10-21 22:15:57 +02:00
Max Kellermann
74904b9cf2
DecoderList: reimplement _for_each() with function object
2013-10-21 22:02:19 +02:00
Max Kellermann
82059645f1
decoder: rename the struct to "Decoder"
2013-10-21 21:12:37 +02:00
Max Kellermann
13e9f18403
DecoderPlugin: move functions into the struct
2013-10-21 21:08:12 +02:00
Max Kellermann
875821f2ba
SongUpdate: use tag_file_scan()
...
Eliminate duplicate code.
2013-10-21 21:05:59 +02:00
Max Kellermann
cc3be3aeed
TagFile: use IgnoreError()
2013-10-21 20:52:59 +02:00
Max Kellermann
72af3c0489
decoder_plugin: rename struct to DecoderPlugin
2013-10-21 20:31:34 +02:00
Max Kellermann
65e54f6ed1
decoder/modplug: use WritableBuffer instead of GByteArray
...
Eliminate the temporary buffer, do I/O right into the WritableBuffer.
2013-10-21 20:22:53 +02:00
Max Kellermann
10196496f3
decoder/modplug: move code to LoadModPlugFile()
2013-10-21 20:19:27 +02:00
Max Kellermann
86f08862e4
playlist/EmbeddedCue: use std::string for the "cuesheet" attribute
2013-10-21 10:53:31 +02:00
Max Kellermann
83c726a34f
GetBaseUTF8
2013-10-21 10:50:22 +02:00
Max Kellermann
a0415f73d4
archive/bz2: remove unused function bz2_quark()
2013-10-21 10:50:22 +02:00
Max Kellermann
93068f10ec
fs/AllocatedPath: don't include glib.h
2013-10-21 10:27:14 +02:00
Max Kellermann
7142c81c05
DirectorySave: use Directory::GetName()
2013-10-21 10:04:59 +02:00
Max Kellermann
c0421a57da
input/curl: don't use GLib's typedef "gushort"
2013-10-21 09:54:21 +02:00
Max Kellermann
8f1ec1dfdf
util/NumberParser: utilities for parsing numbers from ASCII strings
2013-10-21 09:48:31 +02:00
Max Kellermann
222dc8a239
Util/ASCII: add StringEqualsCaseASCII() overload with length
...
Replaces GLib's g_ascii_strncasecmp().
2013-10-21 08:42:55 +02:00
Max Kellermann
0e4d2e7277
Util/ASCII: add function StringEqualsCaseASCII()
...
Replaces GLib's g_ascii_strcasecmp().
2013-10-20 23:09:51 +02:00
Max Kellermann
2bbff77e48
OutputControl: convert anonymous enum to constexpr
2013-10-20 13:53:01 +02:00
Max Kellermann
3315c67f0f
Inotify: convert anonymous enum to constexpr
2013-10-20 13:51:55 +02:00
Max Kellermann
b879bcb1eb
UpdateWalk: convert anonymous enum to constexpr
2013-10-20 13:50:34 +02:00
Max Kellermann
ae99135c8d
Main: convert anonymous enum to constexpr
2013-10-20 13:47:32 +02:00
Max Kellermann
1defb38a6f
DatabaseSave: convert anonymous enum to constexpr
2013-10-20 13:46:13 +02:00
Max Kellermann
56bc9e12ee
ClientInternal: convert anonymous enum to constexpr
2013-10-20 13:45:47 +02:00
Max Kellermann
116ebe0494
Idle: convert anonymous enum to constexpr
2013-10-20 13:45:21 +02:00
Max Kellermann
5ec843dcc8
*Commands: move to src/command/
2013-10-20 13:41:04 +02:00
Max Kellermann
a78b2d84ed
TagType: rename enum tag_type to TagType
2013-10-20 13:32:59 +02:00
Max Kellermann
cf4d80fc65
command: convert command_return to to a strictly-typed enum
2013-10-20 13:10:54 +02:00
Max Kellermann
8118bc93a8
FatalError: remove unused GError overload
2013-10-20 13:10:09 +02:00
Max Kellermann
c772bc45c6
PlaylistError: convert playlist_result to a strictly-typed enum
2013-10-20 13:06:40 +02:00
Max Kellermann
c1e7be3b8e
decoder/sidplay: add header file
2013-10-20 13:05:50 +02:00
Max Kellermann
17ecc56e83
decoder/sidplay: update file name
2013-10-20 13:03:58 +02:00
Max Kellermann
75ba961e97
Client: move message functions into the class
2013-10-19 19:44:45 +02:00
Max Kellermann
c2d5ce0ca2
Client: move trivial functions into the Client class
2013-10-19 19:39:40 +02:00
Max Kellermann
32645b80c4
ClientInternal: move class Client to Client.hxx
...
Publish the Client API, preparing to move more code into the Client
class.
2013-10-19 19:35:37 +02:00
Max Kellermann
ff626ac763
*: use references instead of pointers
2013-10-19 18:48:38 +02:00
Max Kellermann
59f8144c50
*: use nullptr instead of NULL
2013-10-19 18:19:03 +02:00
Max Kellermann
5a7c931293
input/cdio: use class AllocatedPath
2013-10-19 17:48:46 +02:00
Max Kellermann
1373d40fea
decoder/mpg123: use const_cast instead of g_strdup()
2013-10-19 17:46:00 +02:00
Max Kellermann
3274bb54ad
event/ServerSocket: pass AllocatedPath to AddPath()
2013-10-19 17:40:56 +02:00
Max Kellermann
7db124068f
ConfigPath: use std::string
2013-10-19 17:32:49 +02:00
Max Kellermann
39e2ffe212
decoder/mikmod: use const_cast instead of g_strdup()
2013-10-19 17:30:56 +02:00
Max Kellermann
0a213ddf03
input/curl: use std::string for meta_name
...
Automatic memory management.
2013-10-19 17:24:21 +02:00
Max Kellermann
5dc4cbdf82
util/FormatString: new library to replace g_strdup_printf()
2013-10-19 17:24:21 +02:00
Max Kellermann
1434e5a22e
decoder/gme,input/curl,...: use static buffers instead of g_strdup_printf()
2013-10-19 17:15:17 +02:00
Max Kellermann
9acc1e1e97
Permission: use std::find instead of g_strsplit()
2013-10-19 16:47:56 +02:00
Max Kellermann
daa47546c7
Permission: move code to ParsePermission() and a table
2013-10-19 16:47:41 +02:00
Max Kellermann
c5194d0a8f
Permission: convert PERMISSION_* from macro to constexpr
2013-10-19 16:47:23 +02:00
Max Kellermann
7ece8ff85c
Permission: remove nullptr check
...
Both callers pass non-nullptr.
2013-10-19 16:40:40 +02:00
Max Kellermann
a4effeb3f9
Permission: convert PERMISSION_PASSWORD_CHAR from macro to constexpr
2013-10-19 16:39:45 +02:00
Max Kellermann
d3f28a1d7f
FilterConfig: use std::find instead of g_strsplit_set()
2013-10-19 16:34:11 +02:00
Max Kellermann
03cddd0acf
FilterConfig: return bool
2013-10-19 16:29:56 +02:00
Max Kellermann
04a737e04c
FilterConfig: move code to filter_chain_append_new()
2013-10-19 16:26:51 +02:00
Max Kellermann
966c54bef5
FilterConfig: eliminate duplicate API documentation
2013-10-19 16:23:40 +02:00
Max Kellermann
efcd9dfc35
ConfigData: use strtoul() in GetUnsignedValue()
...
Lifts the artificial 31 bit limit in i386 where
sizeof(long)==sizeof(int).
2013-10-19 16:12:52 +02:00
Sebastian Thorarensen
db44a6e948
decoder/modplug: Add "loop_count" parameter
...
The "loop_count" configuration parameter allows the user to set how
many times a module with backward loops shall loop. "0" (the default)
means a module is not allowed to use backward loops at all. "-1"
enables inifinite looping.
2013-10-19 16:12:17 +02:00
Sebastian Thorarensen
d6553fc6a7
ConfigData: Add support for signed integers
...
Now config_param::GetBlockValue() can be used to get signed integers
from the configuration.
2013-10-19 16:11:33 +02:00
Ben Boeckel
fc9014f7ec
PlayerThread: Only drop 0 length packets without tags
...
Fixes a regression from 752dfb3d95
which
caused the current chunk to be flushed as soon as new replaygain
information was found. If this occurs on a tag chunk, it has no data
(length 0) and is then skipped before pushing it to all of the outputs.
This change allows 0-length chunks through if they contain a tag and
they are now appearing in mplayer and mpv properly.
2013-10-19 15:45:11 +02:00
Max Kellermann
b39ab76118
Util/CharUtil: new library replacing g_ascii_isX()
2013-10-19 15:36:47 +02:00
Max Kellermann
90777f78c9
playlist/(Ext)M3u: use strchug_fast()
2013-10-19 15:36:47 +02:00
Max Kellermann
8e063829c4
encoder/{opus,vorbis}: new serial generator replacing g_random_int()
2013-10-19 14:43:24 +02:00
Max Kellermann
139c6be370
encoder/wave: include cleanup
2013-10-19 02:05:44 +02:00
Sebastian Thorarensen
b6ac249c3c
decoder/mikmod: Add loop configuration parameter
...
This patch allows the user to configure the mikmod decoder plugin to loop
modules. It adds a configuration parameter to the mikmod decoder called
"loop" which can be "no" (the old behaviour, default) or "yes" to allow
modules to use backward loops.
2013-10-18 14:23:24 +02:00
Max Kellermann
5e103b5fb7
filter/route: merge the two loops, one-pass parsing
2013-10-18 12:24:49 +02:00
Max Kellermann
de5be62da5
filter/route: allocate "sources" statically
...
Worst-case allocation using MAX_CHANNELS.
2013-10-18 12:24:47 +02:00
Max Kellermann
b5f608d026
filter/route: use int8_t instead of signed char
2013-10-18 12:24:47 +02:00
Max Kellermann
58fe352fda
util/StringUtil: rename strchug_fast_c() to strchug_fast()
...
Overload the name.
2013-10-18 12:24:47 +02:00
Max Kellermann
b105093dcd
ZeroconfAvahi: convert avahiRunning to a "bool"
2013-10-18 10:50:14 +02:00
Max Kellermann
d1c401fe7a
ZeroconfAvahi: integrate into the EventLoop
...
Finally fixes the regression by commit c1f4f1fd
.
2013-10-18 09:16:55 +02:00
Max Kellermann
43863a70c8
SignalMonitor: add SignalMonitorGetEventLoop()
...
Eliminate the global variable "shutdown_loop".
2013-10-18 08:44:40 +02:00
Max Kellermann
bd5a70c712
input/curl: use MultiSocketMonitor constants instead of GLib
2013-10-18 08:30:44 +02:00
Max Kellermann
bcfc62a3f2
PlaylistEdit, QueueSave: free the Song object after Append()
...
Fix for a major memory leak.
2013-10-18 01:12:47 +02:00
Max Kellermann
abfbd55305
fs/Path: rename to AllocatedPath
...
The new class Path only holds a string pointer without being
responsible for allocation/deallocation. The FileSystem.hxx library
accepts Path arguments instead of AllocatedPath, to avoid forcing
callers to allocate another string object.
2013-10-17 23:43:46 +02:00
Max Kellermann
b3611524f4
fs/Path: move definitions to struct PathTraits
2013-10-17 23:23:25 +02:00
Max Kellermann
a63613dba0
fs/Path: include clenaup
2013-10-17 23:20:26 +02:00
Max Kellermann
7fec2b02d4
fs/Charset: GetFSCharset() returns "utf-8" by default
...
If fs_charset is empty, i.e. we're using the default "utf-8",
GetFSCharset() should return exactly that instead of an empty
std::string.
2013-10-17 22:47:09 +02:00
Max Kellermann
608a98c873
fs/Charset: default filesystem charset is UTF-8
...
Implement a fast path for UTF-8 which leaves fs_charset empty, and
don't assign a value to fs_charset if there's no configuration.
2013-10-17 22:42:22 +02:00
Max Kellermann
f951e5356b
fs/Charset: don't allow nullptr arguments
2013-10-17 22:39:06 +02:00
Max Kellermann
080ee87e07
fs/Path: move configuration code to Config.cxx
2013-10-17 22:29:03 +02:00
Max Kellermann
fa60b9ae94
fs/Path: move path_domain to Domain.hxx
2013-10-17 22:20:53 +02:00
Max Kellermann
0d33ae52c6
fs/Path: make fs_charset static
2013-10-17 22:10:27 +02:00
Max Kellermann
77e4b28092
fs/Path: include cleanup
2013-10-17 22:08:57 +02:00
Max Kellermann
4817437d31
fs/Limits: convert macro to "constexpr"
2013-10-17 22:08:56 +02:00
Max Kellermann
354b5a9365
fs/Path: move MPD_PATH_MAX to Limits.hxx
2013-10-17 22:00:01 +02:00
Max Kellermann
58502b38d3
*: use std::numeric_limits
2013-10-17 21:53:19 +02:00
Max Kellermann
d44880dfa9
UpdateGlue: handle update id management
...
Add UpdateQueueItem::id to keep track of the id in every item.
Replaces thhe hack in update_queue_push().
2013-10-17 21:45:53 +02:00
Max Kellermann
0c63632cc2
UpdateGlue: pass UpdateQueueItem around
...
Fixes a few kludges and avoids GLib allocation.
2013-10-17 21:45:42 +02:00
Max Kellermann
b93523c0b1
UpdateGlue: never pass null to update_enqueue()
2013-10-17 21:45:41 +02:00
Max Kellermann
7ef40de98b
UpdateQueue: use std::string and std::queue
2013-10-17 21:13:40 +02:00
Max Kellermann
196ec25682
Mapper: use std::string
2013-10-17 19:54:58 +02:00
Max Kellermann
c85af12d45
StickerDatabase: return std::string
2013-10-17 19:39:23 +02:00
Max Kellermann
e452d1f5b4
StickerDatabase: add pure/const attributes
2013-10-17 19:39:22 +02:00
Max Kellermann
ffea268d2e
PlayerControl: GetError() returns an Error, not a char*
2013-10-17 19:34:59 +02:00
Max Kellermann
8e676db633
Thread/Thread: replacement library for GThread
2013-10-17 19:29:47 +02:00
Max Kellermann
f6d74012b7
util/Error: add method SetLastError()
2013-10-17 19:29:38 +02:00
Max Kellermann
32dfc11c23
Main: use ThreadId instead of GThread*
2013-10-17 19:28:34 +02:00
Max Kellermann
05de2e998c
InputStream: use int64_t instead of goffset
...
Decouple some more from GLib.
2013-10-17 10:45:10 +02:00
Max Kellermann
24780d99e6
input_plugin: rename struct to "InputPlugin"
2013-10-17 10:20:57 +02:00
Max Kellermann
7c1cf61728
thread/{Cond,Mutex}: use "class" instead of "typedef"
...
Allows forward-declaration.
2013-10-17 10:06:31 +02:00
Max Kellermann
eb10d08671
CueParser: use std::string
2013-10-17 01:34:10 +02:00
Max Kellermann
abb0549e4b
InotifyUpdate: use class Path
2013-10-17 01:16:46 +02:00
Max Kellermann
5327ea13ac
PlaylistSave: eliminate the last g_warning() call
2013-10-17 01:15:54 +02:00
Max Kellermann
be8ceae6e6
Song: GetURI() returns std::string
2013-10-17 01:01:15 +02:00
Max Kellermann
67ae033de7
ArchiveLookup: in-place editing, avoid string copy
2013-10-17 00:54:20 +02:00
Max Kellermann
161f7ced96
ArchiveLookup: declare local variables later
2013-10-17 00:48:58 +02:00
Max Kellermann
72bc11b180
ArchiveLookup: don't reset out arguments
...
If we return false, their values are undefined.
2013-10-17 00:46:26 +02:00
Max Kellermann
15c2538532
ArchiveLookup: move code to FindSlash()
2013-10-17 00:44:57 +02:00
Max Kellermann
fd9dd9343b
ArchiveLookup: move code to FindSuffix()
2013-10-17 00:38:26 +02:00
Max Kellermann
1b8a1d4140
ArchiveLookup: return const strings
2013-10-17 00:36:52 +02:00
Max Kellermann
e132d10aec
ArchiveLookup: move API documentation to header
2013-10-17 00:36:35 +02:00
Max Kellermann
d6967db761
decoder/wildmidi: remove suport for libwildmidi 0.2.2 or older
2013-10-16 23:57:26 +02:00
Max Kellermann
5e26e2ab1d
system/ByteOrder: new library for byte ordering / endianess
...
Replacing GLib macros.
2013-10-16 22:09:44 +02:00
Max Kellermann
08eca827b6
util/ByteReverse: use C99 "restrict"
...
Micro-optimization.
2013-10-16 22:07:59 +02:00
Max Kellermann
6b2b5af344
util/byte_reverse: convert to C++
2013-10-16 22:07:52 +02:00
Max Kellermann
f32fbd9ed1
pcm_pack: convert to C++
2013-10-16 22:07:43 +02:00
Max Kellermann
e3511d0ee0
encoder/wave: use delete to dispose the WaveEncoder object
2013-10-16 22:07:32 +02:00
Max Kellermann
fa13a6616f
Archive*: move archive_domain to ArchiveDomain.cxx
...
Merge duplicate symbol.
2013-10-15 23:24:54 +02:00
Max Kellermann
d4c2f91182
ConfigData: remove unused method DupBlockString()
2013-10-15 23:19:44 +02:00
Max Kellermann
084fd8df63
playlist/soundcloud: use std::string
2013-10-15 23:17:53 +02:00
Max Kellermann
328131b7aa
output/roar: use const_cast instead of g_strdup()
2013-10-15 23:14:34 +02:00
Max Kellermann
85003429af
output/roar: use std::string
2013-10-15 23:11:32 +02:00
Max Kellermann
6db77dcf75
output/roar: move code into the RoarOutput class
2013-10-15 22:58:38 +02:00
Max Kellermann
1cde86823d
output/pipe: use std::string
2013-10-15 22:52:04 +02:00
Max Kellermann
dbd88e6aef
Client, ...: remove unnecessary glib.h include
2013-10-15 22:51:09 +02:00
Max Kellermann
45418583e9
ApeTag: use std::string for temporary allocation
2013-10-15 22:50:02 +02:00
Max Kellermann
77a1133723
PlaylistRegistry: use std::string for temporary allocation
2013-10-15 22:49:51 +02:00
Max Kellermann
25c208d81d
input/*: don't allocate attribute "mime"
...
This was a memory leak, because "mime" was a std::string which created
another copy and discarded the allocated buffer.
2013-10-15 22:49:23 +02:00
Max Kellermann
67f87db511
UpdateArchive: use std::string for temporary string
2013-10-15 22:49:12 +02:00
Max Kellermann
7de96275dd
ConfigData: use std::string for config_param::value
2013-10-15 22:49:01 +02:00
Max Kellermann
e13d0bf656
Permission: use std::string for temporary password allocation
...
As a side effect, this fixes a memory leak.
2013-10-15 22:48:09 +02:00
Max Kellermann
8ed9f7effa
Mapper: remove obsolete variable music_dir_fs_length
2013-10-15 22:48:01 +02:00
Max Kellermann
12ab556477
event/BufferedSocket: pass writable pointer to OnSocketInput()
...
Remove the const_cast from HttpdClient.cxx, and avoid one allocation
in ClientRead.cxx.
2013-10-15 22:47:46 +02:00
Max Kellermann
509f8dab89
Util/Macros: replacement for GLib's G_N_ELEMENTS()
2013-10-15 22:47:39 +02:00
Max Kellermann
77429b6dd3
output/winmm: use delete instead of g_free()
2013-10-15 22:47:25 +02:00
Max Kellermann
84d20d9e43
util/FifoBuffer: C++ version of the fifo_buffer library
2013-10-15 10:28:52 +02:00
Max Kellermann
0c13703da3
system/clock: convert to C++
2013-10-15 09:38:12 +02:00
Max Kellermann
b97b7a7493
require GLib 2.28
...
The header glib_compat.h is now obsolete and can be removed.
2013-10-15 09:35:25 +02:00
Max Kellermann
be2951b45f
gcc.h: rename to Compiler.h
2013-10-15 09:21:59 +02:00
Max Kellermann
1dd1a705b5
gcc.h: major update
...
Copy the according file from another project (i.e. XCSoar). This will
allow copying more code more easily.
2013-10-15 09:13:22 +02:00
Max Kellermann
e4e80ff0cb
*: use WIN32 instead of G_OS_WIN32
2013-10-15 08:33:44 +02:00
Max Kellermann
9508ea982b
fs/Path: add method IsAbsolute()
2013-10-14 22:38:29 +02:00
Max Kellermann
47d655ea7f
fs/Path: add separator constants/functions
2013-10-14 22:26:23 +02:00
Max Kellermann
62271bf6ce
PlaylistFile: always check for absolute paths within music_directory
...
Try map_fs_to_utf8() first, and fall back to Path::ToUTF8() for
absolute paths.
2013-10-14 22:21:22 +02:00
Max Kellermann
0b27ac2f5c
fs/Path: add method RelativeFS()
...
Move code from map_fs_to_utf8().
2013-10-14 22:09:02 +02:00
Max Kellermann
6fd481df97
Mapper, ...: use memcmp() instead of strncmp() where appropriate
...
Micro-optimization.
2013-10-14 22:00:21 +02:00
Max Kellermann
b915e43391
fs/Path: add method data()
2013-10-14 21:57:43 +02:00
Max Kellermann
c96b295700
PlaylistFile: fix memory leak
...
Consistently use std::string in LoadPlaylistFile().
2013-10-14 21:53:08 +02:00
Max Kellermann
9067da2df8
Mapper: map_fs_to_utf8() returns std::string
...
Avoid the conversion to an allocated char*, let the caller decide.
2013-10-14 21:43:41 +02:00
Max Kellermann
8cf2f52f7a
Merge tag 'release-0.17.6'
2013-10-14 21:40:56 +02:00
Florian Schlichting
d9c662d51f
decoder/modplug: fix include directory
2013-10-14 21:12:47 +02:00
Max Kellermann
ad631d563b
stored_playlist: use fs_charset_to_utf8() for URLs
2013-10-14 21:11:20 +02:00
Max Kellermann
7cbaf11dda
load_file
2013-10-14 21:00:46 +02:00
Max Kellermann
3be63549c0
stored_playlist: add "file://" prefix to absolute paths
...
Prepare to fix loading arbitrary song files from stored playlists.
2013-10-14 20:52:49 +02:00
Max Kellermann
17c6db6c33
replay_gain_*.h: rename to *.hxx
2013-10-02 12:22:12 +02:00
Max Kellermann
86316b1828
output/httpd: don't include glib.h in header
2013-10-02 12:20:36 +02:00
Max Kellermann
efc3a69dbf
Stats: don't include glib.h in header
...
Use forward declaration instead.
2013-10-02 12:16:52 +02:00
Max Kellermann
ec883e1901
Stats: rename stats.h to Stats.hxx
2013-10-02 12:14:07 +02:00
Max Kellermann
060814daa8
Log: new logging library API
...
Prepare to migrate away from GLib. Currently, we're still using GLib
as a backend.
2013-10-02 08:57:55 +02:00
Max Kellermann
c53492a76a
TextFile: don't include glib.h in header
...
Un-inline the methods that use GLib.
2013-10-02 08:56:27 +02:00
Max Kellermann
43675717b8
filesystem/Path: use std::string
2013-10-02 08:56:27 +02:00
Max Kellermann
b21ed2fa36
PlaylistMapper: convert playlist name to filesystem charset
2013-10-02 08:56:27 +02:00
Max Kellermann
0214baad5a
Playlist*: use nullptr instead of NULL
2013-10-02 08:56:27 +02:00
Max Kellermann
c2d3ed2acc
Listen, ...: add missing includes
2013-10-02 08:56:27 +02:00
Max Kellermann
0339c8d025
ConfigData: handle default_value==nullptr
...
Return Path::Null() instead of dying from assertion failure.
2013-10-02 08:56:02 +02:00
Max Kellermann
0e0be0243b
Daemon, Mapper: move-assign the Path objects
2013-10-01 18:50:18 +02:00
Max Kellermann
a2ce2447a6
Merge branch 'v0.17.x'
2013-10-01 17:20:38 +02:00
Max Kellermann
9a1076256d
mixer/alsa: handle ENODEV
...
Fixes busy loop when USB sound device gets unplugged (Mantis bug
#3824 ).
2013-10-01 16:35:27 +02:00
Max Kellermann
72ef38d4a7
mixer/alsa: log snd_mixer_handle_events() errors
2013-10-01 16:30:20 +02:00
Max Kellermann
5e20b7976f
DecoderControl: lock the mutex in Seek()
...
Use LockSynchronousCommand() instead of SynchronousCommandLocked().
Fixes regression from commit ef663810
(dead lock due to cond_wait with
unlocked mutex).
2013-09-30 16:20:35 +02:00
Max Kellermann
36f712b949
tag/{riff,aiff}: convert to C++
2013-09-28 14:14:13 +02:00
Max Kellermann
a446775d80
playlist/lastfm: remove defunct Last.fm support
...
This plugin has been defunct ever since Last.fm changed their
protocol. Since there is no volunteer willing to fix the plugin, I'm
removing it now.
2013-09-28 14:01:51 +02:00
Max Kellermann
ccd7f0825a
DecoderControl: use GLib forward declarations
2013-09-27 23:00:23 +02:00
Max Kellermann
d0896ea7c4
PlayerThread: convert struct player to a class
2013-09-27 22:22:11 +02:00
Max Kellermann
a73d1e4b1c
PlayerThread: use strictly typed enum
2013-09-27 22:19:26 +02:00
Max Kellermann
d05bb2a0af
PlayerControl: use strictly typed enums
2013-09-27 22:07:20 +02:00
Max Kellermann
6765901687
DecoderControl: convert "enum decoder_state" to strictly-typed enum
2013-09-27 12:27:33 +02:00
Max Kellermann
c5d05ac0cf
DecoderCommand: convert to strictly-typed enum
2013-09-27 12:11:37 +02:00
Max Kellermann
939003c1f1
OutputAll: add pure/const attributes
2013-09-27 09:38:47 +02:00
Max Kellermann
a10f3a8aec
PlayerControl: convert functions to methods
2013-09-27 09:30:19 +02:00
Max Kellermann
ef663810a2
DecoderControl: convert functions to methods
2013-09-27 09:18:03 +02:00
Max Kellermann
ada67a6a4f
PlayerThread: move code to player_control::CommandFinished()
2013-09-27 07:58:48 +02:00
Max Kellermann
b6a5d1ad5a
PlayerThread: use nullptr instead of NULL
2013-09-27 00:03:22 +02:00
Max Kellermann
d8c5a63bc2
PlayerThread: unlock/lock in player_task()
2013-09-26 23:58:41 +02:00
Max Kellermann
bcb2db62c9
PlayerThread: move code into the player class
2013-09-26 23:57:31 +02:00
Max Kellermann
079ef93121
PlayerThread: use player references
2013-09-26 23:27:47 +02:00
Max Kellermann
b2789c598e
PlayerThread: use {decoder,player}_control references
2013-09-26 22:53:40 +02:00
Max Kellermann
92a93c1217
PlayerThread: allocate decoder_control on the stack
2013-09-26 22:48:55 +02:00
Max Kellermann
96b70835f9
PlayerThread: move global MusicBuffer variable into the player object
2013-09-26 22:45:49 +02:00
Max Kellermann
7fa3b7a267
PlayerThread: simplify "buffer empty" assertion
2013-09-26 22:41:07 +02:00
Max Kellermann
f3fc76e3c8
MusicChunk: remove obsolete prototypes
2013-09-26 22:34:43 +02:00
Max Kellermann
3216f4b257
MusicBuffer: expose the C++ API
2013-09-26 22:21:56 +02:00
Max Kellermann
ce1d897575
MusicPipe: expose the C++ API
2013-09-26 21:51:45 +02:00
Max Kellermann
17e108a10a
MusicChunk: use constexpr for CHUNK_SIZE
2013-09-26 21:49:26 +02:00
Max Kellermann
5bc4ab899f
*Plugin: remove redundant "line %i" from error messages
...
The MPD core will add this as a prefeix.
2013-09-26 20:59:40 +02:00
Max Kellermann
44faf1080c
SongFilter: search for album artist falls back to the artist tag
...
Implement Mantis ticket 0003646.
2013-09-26 19:25:13 +02:00
Max Kellermann
e354c5c2a8
IdTable, SongFilter: use std::fill_n() instead of std::fill()
2013-09-26 18:25:28 +02:00
Max Kellermann
04bc9005ae
TagType: reduce the enum size to 1 byte
...
Reduce the TagItem overhead.
2013-09-26 18:14:58 +02:00
Max Kellermann
3c92c69bc7
Tag: add "pure" attributes
2013-09-26 18:11:00 +02:00
Max Kellermann
52ee132d92
TagHandler: use a TagBuilder internally
...
Reduce heap allocator overhead.
2013-09-26 17:35:08 +02:00
Max Kellermann
7ca0aedcfc
Main: fix crash if no database was configured
...
Add nullptr check, and return early from glue_db_init_and_load().
2013-09-26 17:33:46 +02:00
Max Kellermann
a2c4037a24
Main: use nullptr instead of NULL
2013-09-26 17:31:50 +02:00
Max Kellermann
d7b0073ce1
decoder/modplug: fix include directory
...
Since Debian package 1:0.8.8.4-4, the pkg-config file does not contain
-I/usr/include/libmodplug anymore, and we need to add the
"libmodplug/" prefix to the #include line.
2013-09-26 17:27:35 +02:00
Artem Savkov
585b68d2ae
input/curl: fix EventLoop stall after curl_easy_pause
...
When playing finite http streams, e.g. something from soundcloud,
eventloop stalls after pausing writefunc. TimeoutMonitor is cancelled
by the time resume happens, so when enough data is consumed writefunc
is called only once. Calling InvalidateSockets() from
input_curl_resume() seems to fix the issue.
2013-09-26 17:27:35 +02:00
Max Kellermann
89d2d648cc
ConfigPath: return early on "~"
...
Previously, the pointer was moved to undefined memory.
2013-09-12 11:05:59 +02:00
Max Kellermann
7532f24d58
ConfigPath: skip the slash of "~/"
...
Increment the "path" earlier.
2013-09-12 11:05:41 +02:00
Max Kellermann
69a5df2f98
ConfigPath: remove the "~/" from the constructed path
...
This was building broken paths like "/home/foo/~/bar". Bug found by
Maarten de Vries.
2013-09-12 10:54:45 +02:00
Max Kellermann
1c65908cdb
ConfigPath: simplify the duplicate tilde check
2013-09-12 10:49:57 +02:00
Max Kellermann
3aaf013dd1
ConfigPath: convert "home" variable to Path object
...
Use Path::FromUTF8() for the g_get_home_dir() return value instead of
assuming it's already FS charset.
2013-09-12 10:35:40 +02:00
Max Kellermann
5f2705ab07
ConfigPath: move code to GetHome()
2013-09-12 10:30:00 +02:00
Max Kellermann
9af620982c
ConfigPath: include cleanup
2013-09-12 10:17:41 +02:00
Max Kellermann
1ee6a78cb7
Path: add FromUTF8() overload that returns an Error
2013-09-12 10:17:41 +02:00
Max Kellermann
bf4ee48efa
ConfigPath: move path_domain to system/Path.cxx
2013-09-12 10:03:37 +02:00
Maarten de Vries
08e6d222a2
Listen: Allow tilde paths for socket.
2013-09-12 08:55:45 +02:00
Max Kellermann
a24589d46e
TagBuilder: add method Commit(Tag&)
...
For callers that already have a Tag instance.
2013-09-05 19:23:06 +02:00
Max Kellermann
84533b6cad
TagBuilder: add method IsEmpty()
2013-09-05 19:14:47 +02:00
Max Kellermann
8dca38e979
Tag: remove the obsolete "bulk" mode
...
Methods BeginAdd() and EndAdd() have been replaced by class
TagBuilder.
2013-09-05 19:08:22 +02:00
Max Kellermann
662bed6a00
db/proxy: use class TagBuilder
2013-09-05 19:07:27 +02:00
Max Kellermann
ae5e0cb02b
SongSave: use class TagBuilder
2013-09-05 18:59:19 +02:00
Max Kellermann
0b3e1c4706
TagBuilder: new class for constructing Tag objects
...
Obsoletes Tag::BeginAdd() and the complicated "bulk add" code.
2013-09-05 18:41:49 +02:00
Max Kellermann
ce08a7a932
TagItem: disable the copy constructor/operator
...
This is not a C++ class and must not be copied.
2013-09-05 18:41:01 +02:00
Max Kellermann
5d5f21bfc5
Tag: compile-time initialisation of ignore_tag_items
...
Move to TagSettings.c and use C99 initializers.
2013-09-05 18:34:12 +02:00
Max Kellermann
fcccedc588
Tag: move struct TagItem to TagItem.hxx
2013-09-05 18:28:07 +02:00
Max Kellermann
0d73a49327
Tag: move fix_tag_value() to TagString.cxx
2013-09-05 18:27:40 +02:00
Max Kellermann
6239dd96f2
Tag: remove unused methods
2013-09-05 18:27:31 +02:00
Max Kellermann
57a4700fb9
TagNames: make tag_item_names const
2013-09-05 18:27:23 +02:00
Max Kellermann
2b676dc5fc
Tag: move configuration code to TagConfig.cxx
...
Allow using the Tag.cxx library without the Config library.
2013-09-05 18:27:08 +02:00
Max Kellermann
3f267b1795
Tag, ...: move to libtag.a
2013-09-05 18:26:56 +02:00
Max Kellermann
7a4c9f5f4c
mpd_error.h: remove obsolete header
...
Migrate the remaining callers to FatalError().
2013-09-05 18:26:46 +02:00
Ales Guzik
3330aa6f6a
input/curl: enable https
2013-09-05 11:56:49 +02:00
Max Kellermann
8929f88e6d
PlaylistPlugin: add interface SongEnumerator
...
Replaces struct playlist_provider.
2013-09-05 09:40:55 +02:00
Max Kellermann
5348808bf5
PlaylistPlugin, ConfigGlobal: use nullptr instead of NULL
2013-09-05 09:40:32 +02:00
Max Kellermann
fccba1af2a
use standard snprintf() instead of GLib g_snprintf()
2013-09-05 09:21:53 +02:00
Max Kellermann
26d92c80ed
conf.h: remove obsolete header
...
Use only ConfigData.hxx in plugin sources to reduce header
dependencies.
2013-09-05 08:47:10 +02:00
Max Kellermann
9605e24655
conf.h: move constants to ConfigDefaults.hxx
2013-09-05 08:42:08 +02:00
Max Kellermann
7d0269d2ce
InputLegacy: move functions to the input_stream class
2013-09-05 00:23:14 +02:00
Max Kellermann
681d6bbdc5
TagTable: un-inline the two functions
...
Reduce header dependencies.
2013-09-04 23:57:30 +02:00
Max Kellermann
867b82b6de
Tag*: move TagTable.hxx to libtag.a
2013-09-04 23:54:37 +02:00
Max Kellermann
5101ef4b02
Tag*: move libtag.a sources to src/tag/
2013-09-04 23:46:20 +02:00
Max Kellermann
ee9e238179
system/SocketError: un-inline constructor
...
Reduces header dependencies.
2013-09-04 23:36:30 +02:00
Max Kellermann
29030b54c9
util/Error: new error passing library
...
Replaces GLib's GError.
2013-09-04 18:14:22 +02:00
Max Kellermann
c9fcc7f148
system/resolver: convert to C++
2013-09-04 18:02:09 +02:00
Max Kellermann
d1f4a31b5e
output/pulse: require libpulse 0.9.16
...
Remove all #ifdefs. Old versions of libpulse are not being tested,
and thus I'm removing support.
2013-09-04 16:55:03 +02:00
Max Kellermann
b691d3123b
IOThread: pass GError to FatalError()
...
Fixes build failure on GLib < 2.32.
2013-09-04 16:54:52 +02:00
Max Kellermann
f68e36f8c2
DatabaseSave: eliminate redundant db_quark() implementation
2013-09-03 11:52:57 +02:00
Max Kellermann
4db119c01b
IOThread: use FatalError() on g_thread_create() error
...
New GLib versions don't fail.
2013-09-03 11:28:47 +02:00
Max Kellermann
bbd7115564
input/{mms,despotify}: remove "seek" implementation
...
Omitting it has the same effect as returning false unconditionally.
2013-09-03 10:54:29 +02:00
Max Kellermann
8d36367fe2
input_stream.h: rename to InputLegacy.hxx
2013-09-03 09:18:30 +02:00
Max Kellermann
3deca8fccd
db_error: convert to C++
2013-08-10 19:43:27 +02:00
Max Kellermann
7af24c4d3a
playlist_error: convert to C++
2013-08-10 19:40:45 +02:00
Max Kellermann
7f0ce4e94e
ack.h: move to protocol/
2013-08-10 19:32:41 +02:00
Max Kellermann
5c48d3fbba
alsa/mixer: defer InvalidateSockets() call to I/O thread
2013-08-10 14:05:06 +02:00
Max Kellermann
00420ef9ca
EventLoop: initialise the thread id explicitly
2013-08-10 14:01:55 +02:00
Max Kellermann
b9d30595d6
ZeroconfAvahi: disable Avahi with epoll
...
Temporary hotfix until we have integrated avahi into our new event
loop.
2013-08-10 13:59:01 +02:00
Max Kellermann
c1f4f1fdb6
EventLoop: new implementation using epoll
...
Implement an event loop without GLib.
2013-08-10 13:54:23 +02:00
Max Kellermann
342333f72a
mixer/alsa: invoke InvalidateSockets() in constructor
2013-08-10 13:54:23 +02:00
Max Kellermann
94cdc47786
event/Call: signal the calling thread
...
Fixes regression from commit 018f4155
.
2013-08-10 12:40:44 +02:00
Max Kellermann
cc511e7b60
event/IdleMonitor: new monitor class
2013-08-10 11:52:31 +02:00
Max Kellermann
bb2af791e9
event/MultiSocketMonitor: add struct SingleFD
...
Prepare for migrating away from GLib.
2013-08-10 11:52:31 +02:00
Max Kellermann
f3f4b332ae
event/MultiSocketMonitor: use uint64_t instead of gint64
...
Unsigned and portable.
2013-08-10 11:52:31 +02:00
Max Kellermann
84ac79bb08
event/MultiSocketMonitor: eliminate virtual method CheckSockets()
...
Handle timeout internally.
2013-08-10 11:52:31 +02:00
Max Kellermann
be0c8495cd
event/MultiSocketMonitor: PrepareSockets() returns timeout
...
Simplify the API, don't use GLib specific integer type.
2013-08-10 11:52:31 +02:00
Max Kellermann
cbd0709d1c
glib_compat.h: use monotonic_clock_us() in g_source_get_time()
2013-08-10 11:52:31 +02:00
Max Kellermann
371d635da8
glib_compat.h: remove unused wrapper g_file_test()
2013-08-10 11:52:31 +02:00
Max Kellermann
85216966fa
decoder/wildmidi: use class Path for the "timidity.cfg" location
2013-08-10 11:52:31 +02:00
Max Kellermann
1c823e9d1f
ConfigData: overload GetBlockPath() with default value
2013-08-10 11:52:31 +02:00
Max Kellermann
25e338a098
ConfigData: use FatalError() instead of MPD_ERROR()
2013-08-10 11:52:31 +02:00
Max Kellermann
81175b0717
system/EPollFD: fix typo in Add()
2013-08-10 11:52:31 +02:00
Max Kellermann
d23c907a94
thread/Id: new class replacing GThread pointers
...
Remove a GLib dependencies from class EventLoop and DatabaseLock.
2013-08-10 09:00:04 +02:00
Max Kellermann
018f4155eb
event: add function BlockingCall()
...
Replaces io_thread_call(). This approach is more generic and easier
to use due to std::function.
2013-08-08 23:04:07 +02:00
Max Kellermann
9ab0a1f5f1
EventLoop: add methodd IsInside()
...
Track which thread runs the EventLoop and provide a check whether
we're currently inside.
2013-08-08 23:04:01 +02:00
Max Kellermann
c043b337b1
EventLoop: un-inline Run() and others
...
Prepare for adding more code.
2013-08-08 23:03:49 +02:00
Max Kellermann
090bc6fa79
event/*Monitor: add method GetEventLoop()
2013-08-08 23:03:38 +02:00
Max Kellermann
b63db1c1aa
event/SocketMonitor: un-inline Schedule()
...
Merge with CommitEventFlags().
2013-08-08 00:18:59 +02:00
Max Kellermann
0287ac794e
event/SocketMonitor: add assertions
2013-08-08 00:18:59 +02:00
Max Kellermann
0005221533
output/httpd: use "unsigned" instead of "guint"
2013-08-08 00:18:59 +02:00
Max Kellermann
23d2c0f1c6
Client{Event,Write}: add missing include
2013-08-08 00:14:19 +02:00
Max Kellermann
377b6f05ea
event/BufferedSocket: add missing include
2013-08-08 00:11:40 +02:00
Max Kellermann
3ac2e9d31f
os/FileSystem: disable mkfifo() wrapper on WIN32
2013-08-07 20:31:27 +02:00
Max Kellermann
b76a29a69a
ConfigPath: return a Path object
...
Migrate all callers to use Path directly, instead of doing the
conversion in each caller.
2013-08-07 19:59:09 +02:00
Max Kellermann
abe090ec1f
*: remove remaining __cplusplus checks
2013-08-07 19:58:52 +02:00
Max Kellermann
dff05c71e6
event/EPollFD: basic support for Linux epoll
2013-08-07 19:44:43 +02:00
Max Kellermann
f6f4742410
event/DeferredMonitor: rename Run() to RunDeferred()
2013-08-07 19:39:26 +02:00
Max Kellermann
977004c350
event/DeferredMonitor: use EventLoop::AddIdle()
2013-08-07 19:38:10 +02:00
Max Kellermann
355dd5cb24
event/DeferredMonitor: new class wrapping g_idle_add()
2013-08-07 18:59:42 +02:00
Max Kellermann
123dd5fe2d
mixer/alsa: use AllocatedArray for the pollfd buffer
2013-08-07 18:56:57 +02:00
Max Kellermann
953e3190ca
encoder/lame: use ReusableBuffer instead of AllocatedArray
2013-08-07 18:53:24 +02:00
Max Kellermann
44a0e21795
PcmBuffer: move code to new class ReusableBuffer
...
ReusableBuffer is more generic.
2013-08-07 18:51:21 +02:00
Max Kellermann
870cc1d928
add missing includes
2013-08-07 18:23:55 +02:00
Max Kellermann
d86ee93801
filter/Route: don't access PcmBuffer attributes directly
...
Return the pointer given by PcmBuffer::Get() instead of reaching into
the PcmBuffer object.
2013-08-07 18:23:34 +02:00
Alexander Gehrke
87b7328463
CommandLine.cxx: look for config file in XDG_CONFIG_HOME too
...
Look for "$XDG_CONFIG_HOME/mpd/mpd.conf", similar to where mpd looks
for the file under Windows.
2013-08-07 18:22:27 +02:00
Alexis Ballier
3f846cf6b8
FfmpegDecoderPlugin: Allocate the interleaved buffer as needed instead of using an arbitrary big constant.
...
Also, save a memcpy when FFmpeg outputs interleaved audio.
Fixes build with FFmpeg 2.0.
2013-08-07 15:07:41 +02:00
Max Kellermann
f2ce8c3b62
event/EventFD: move to libsystem
2013-08-07 11:52:26 +02:00
Max Kellermann
4223657ab8
event/SignalMonitor: use signalfd() if available
2013-08-07 11:03:47 +02:00
Max Kellermann
930128a7ea
SignalHandlers: move code to new class SignalMonitor
2013-08-07 10:56:33 +02:00
Max Kellermann
db447440ff
event/Event{Pipe,FD}: auto-create in constructor
...
Errors are fatal now. This makes the class a lot easier to use.
2013-08-07 10:53:22 +02:00
Max Kellermann
b70d38dc10
Makefile.am: move sources to libsystem.a
2013-08-07 10:31:31 +02:00
Max Kellermann
a27d105dcd
FatalError: new library to replace mpd_error.h
2013-08-07 10:08:36 +02:00
Max Kellermann
67e44b0f2c
daemon: convert to C++
2013-08-07 09:53:33 +02:00
Max Kellermann
47e16dbee3
configure.ac: add option --enable-eventfd
...
Remove the runtime check for eventfd(), hard-code the feature once
it's been selected at compile time. The class WakeFD is splitted into
EventFD and EventPipe, using WakeFD as a macro diversion.
2013-08-06 23:32:21 +02:00
Max Kellermann
66f678023f
util/Manual: add missing include <utility>
2013-08-06 22:34:20 +02:00
Max Kellermann
132971f8eb
playlist/pls: use std::string instead of GString
2013-08-06 09:32:08 +02:00
Max Kellermann
3f04a4d635
encoder/lame: dynamic output buffer
2013-08-06 09:13:28 +02:00
Max Kellermann
17c8e839b6
encoder/lame: use delete instead of g_free()
2013-08-06 09:13:07 +02:00
Max Kellermann
348bdcd7b7
encoder/lame: use lame_encode_buffer_interleaved()
...
Don't deinterleave manually, don't allocate memory.
2013-08-06 09:10:30 +02:00
Max Kellermann
a32443c63b
encoder/lame: use offset variable instead of memmove()
2013-08-06 09:02:48 +02:00
Max Kellermann
7e53934ce3
encoder/lame: rename "buffer" to "output_buffer"
2013-08-06 09:02:48 +02:00
Max Kellermann
7c2b553364
playlist/EmbbeddedCue: convert to class
2013-08-05 22:23:33 +02:00
Max Kellermann
409fc837ab
playlist/lastfm: convert to class
2013-08-05 21:44:34 +02:00
Max Kellermann
6d0ada7f45
playlist/lastfm: allocate the lastfm_playlist object at the end
...
Simplify the error path, because the other allocations may fail.
2013-08-05 21:31:54 +02:00
Max Kellermann
af63372d2b
playlist/m3u: allocate ExtM3uPlaylist with new/delete
2013-08-05 21:28:19 +02:00
Max Kellermann
3e91f757a9
playlist/extm3u: allocate ExtM3uPlaylist with new/delete
2013-08-05 21:25:25 +02:00
Max Kellermann
498491ec05
decoder/ffmpeg: convert struct mpd_ffmpeg_stream to a class
2013-08-05 00:15:25 +02:00
Max Kellermann
85b77b81ca
*: use gcc.h macros instead of GLib
2013-08-04 23:48:01 +02:00
Andrzej Rybczak
5bf2ec5a74
DatabasePrint: print Last-Modified attribute for directories
2013-08-04 23:29:24 +02:00
Max Kellermann
9e715089a4
Commands: new command "toggleoutput"
2013-08-04 23:21:23 +02:00
Max Kellermann
9326ce53ec
Merge tag 'release-0.17.5'
2013-08-04 14:36:22 +02:00
Justin Riley
3a34fd181d
FfmpegDecoderPlugin: add application/flv to mime types list
2013-08-04 14:20:16 +02:00
Max Kellermann
fcb7233b25
ConfigData: remove obsolete functions
2013-08-04 14:07:50 +02:00
Max Kellermann
fe53a376a3
PlaylistPlugin: pass config_param reference
2013-08-04 14:07:50 +02:00
Max Kellermann
65842cd99e
DatabasePlugin: pass config_param reference
2013-08-04 14:07:50 +02:00
Max Kellermann
bf6ed643e0
InputPlugin: pass config_param reference
2013-08-04 14:07:50 +02:00
Max Kellermann
a0beb5fa26
MixerPlugin: pass config_param reference
2013-08-04 14:07:50 +02:00
Max Kellermann
f54bcc1f16
FilterPlugin: pass config_param reference
2013-08-04 14:07:50 +02:00
Max Kellermann
ca0d09c50f
EncoderPlugin: pass config_param reference
2013-08-04 14:07:50 +02:00
Max Kellermann
81c3224076
OutputPlugin: pass config_param reference
2013-08-04 14:07:49 +02:00
Max Kellermann
7a1d466fb2
DecoderPlugin: pass config_param reference
2013-08-04 13:30:47 +02:00
Max Kellermann
83f4c48c8a
ConfigData: move code to block_param, config_param methods
2013-08-04 12:03:56 +02:00
Max Kellermann
acd742d225
ConfigData: remove C++ checks
2013-08-03 23:47:31 +02:00
Max Kellermann
d1e7b4e381
audio_format: convert to C++
2013-08-03 21:37:56 +02:00
Max Kellermann
67f591a9ce
gcc.h: add macro gcc_unreachable()
2013-08-03 21:34:17 +02:00
Christoph Mende
7ff988275f
decoder/mikmod: use MikMod_free() to free the title on libmikmod-3.2
...
Player_LoadTitle() returns an aligned pointer in libmikmod-3.2 that
cannot be freed with free(). The correct way to do this now is
MikMod_free() which extracts the original pointer from the buffer and
frees that.
Signed-off-by: Christoph Mende <mende.christoph@gmail.com>
2013-08-01 09:30:20 +02:00
Max Kellermann
363050f44c
playlist_edit: fix "move" relative to current when there is no current song
...
Fixes Mantis #3770 .
2013-08-01 09:28:03 +02:00
tsufeki
d59a332ef9
commmand: fix URI argument in playlistadd
2013-08-01 08:42:22 +02:00
Max Kellermann
105b431e4c
PcmBuffer: reset size in Clear()
...
Fix for Mantis #3806 .
"PcmBuffer::Clear clears the buffer but does not reset the size. If
Get is called on the same PcmBuffer later on with a size that is the
same as (or less than) it was before the call to Clear, the "else"
branch is taken and the memory of buffer (at the address of nullptr)
is poisoned instead of the necessary allocation being performed. A
memset or memcpy on the returned pointer (nullptr) causes a
segmentation fault."
2013-08-01 08:33:53 +02:00
Max Kellermann
ba79f4c1f9
Tag: check bulk mode in Clear()
2013-07-31 09:02:07 +02:00
Max Kellermann
8b2dcf7018
decoder/ffmpeg: require ffmpeg/libav 0.8
...
Now that even Debian stable has picked up version 0.8, we can safely
make this a requirement, and remove a lot of old cruft.
2013-07-31 01:01:21 +02:00
Max Kellermann
44621f7326
output/winmm: adapt to PcmBuffer API changes
2013-07-31 00:57:52 +02:00
Max Kellermann
8ead8f7ea6
decoder/mpcdec: remove support for the "old" API
...
This old version has been obsolete for many years - time to remove it.
2013-07-31 00:43:21 +02:00
Max Kellermann
7f9402bd22
Tag: add method Clear()
...
Allow reusing Tag instances.
2013-07-31 00:35:05 +02:00
Max Kellermann
cbd38327e7
DecoderAPI: pass rvalue reference to decoder_tag()
...
Avoid duplicating the tag.
2013-07-31 00:34:22 +02:00
Max Kellermann
06f898cc12
tag: convert to C++
2013-07-30 20:19:53 +02:00
Max Kellermann
6a9ab8bc0e
tag: move enum tag_type to TagType.h
2013-07-30 20:10:24 +02:00
Max Kellermann
9a0061c511
encoder_api: convert to C++
2013-07-30 09:04:05 +02:00
Max Kellermann
7a3aac1843
encoder/lame,twolame: convert to C++
2013-07-30 08:52:47 +02:00
Max Kellermann
da1f4b3ede
encoder/wave: convert to C++
2013-07-30 08:48:53 +02:00
Max Kellermann
dac740ee17
encoder/null: convert to C++
2013-07-30 08:43:19 +02:00
Max Kellermann
28030d7edb
include cleanup
2013-07-30 08:39:21 +02:00
Max Kellermann
648196319f
output_api: convert to C++
2013-07-30 08:34:10 +02:00