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