Max Kellermann
86a0f9cf9b
PcmFormat: merge duplicate code with a template
2013-02-01 13:47:29 +01:00
Max Kellermann
e6a91d291d
PcmChannels: merge duplicate code with a template
2013-02-01 13:47:24 +01:00
Max Kellermann
bf35972714
ConfigTemplates: fix typo in id3v1_encoding
2013-02-01 13:47:12 +01:00
Max Kellermann
eab78ab99c
PcmDither: use constexpr
2013-01-31 22:55:00 +01:00
Max Kellermann
f2491c88c8
PcmDither: convert struct to a class
2013-01-31 22:54:10 +01:00
Max Kellermann
1b175025fe
pcm_*: convert to C++
2013-01-31 21:11:06 +01:00
Max Kellermann
ccdf7184be
gcc.h: add "restrict" macro for C++
2013-01-31 21:11:06 +01:00
Max Kellermann
7764136211
mixer/software, filter/volume: convert to C++
2013-01-31 21:11:06 +01:00
Max Kellermann
72cf8dd8a0
ZeroconfBonjour: fix OnSocketReady() return type
2013-01-31 21:11:06 +01:00
Max Kellermann
3c2b464dfa
filter/convert: remove unused attribute
2013-01-31 00:31:24 +01:00
Max Kellermann
361404fd59
pcm_convert: convert to C++
2013-01-31 00:26:55 +01:00
Max Kellermann
762c91b7f1
util/Manual: new template class
2013-01-30 23:48:34 +01:00
Max Kellermann
f2a8d4d289
filter/convert: convert to C++
2013-01-30 23:28:13 +01:00
Max Kellermann
9ee52d85d7
filter/autoconvert: include cleanup
2013-01-30 23:19:11 +01:00
Max Kellermann
5ed9f02c4d
TagPool, ...: include cleanup
2013-01-30 22:53:12 +01:00
Max Kellermann
378ebad1c8
ConfigData: use simple linked list instead of GSList
2013-01-30 22:39:24 +01:00
Max Kellermann
e44e0fab9f
ConfigData: forbid copying a config_param object
2013-01-30 22:39:24 +01:00
Max Kellermann
c434077728
FilterConfig: add missing glib.h include
2013-01-30 22:39:24 +01:00
Max Kellermann
6e47e79790
ConfigData: move functions into the class
2013-01-30 22:25:17 +01:00
Max Kellermann
d9ea3082fb
ConfigData: add constructors/destructors
2013-01-30 22:20:14 +01:00
Max Kellermann
2d63c26936
ConfigData: use std::string in block_param
2013-01-30 22:20:14 +01:00
Max Kellermann
3cdd01aa1b
ConfigData: use std::vector for the block_param list
2013-01-30 22:20:13 +01:00
Max Kellermann
d25195447a
ConfigData: use new/delete instead of GLib
2013-01-30 22:20:13 +01:00
Max Kellermann
d664baff26
audio_{parser,config}: convert to C++
2013-01-30 21:47:12 +01:00
Max Kellermann
3275d4c6fa
conf.h: move the GQuark to ConfigQuark.hxx
2013-01-30 21:43:16 +01:00
Max Kellermann
cd0d003197
filter/chain, encoder: GLib include cleanup
2013-01-30 21:42:50 +01:00
Max Kellermann
cfeeb7af2e
test/run_encoder, ...: convert to C++
2013-01-30 21:39:43 +01:00
Max Kellermann
ac887d3afb
ConfigFile: simplify error cleanup
2013-01-30 21:39:43 +01:00
Max Kellermann
e294ccae24
ConfigFile: move code to ConfigGlobal.cxx
2013-01-30 21:39:43 +01:00
Max Kellermann
72070f292b
ConfigFile: add struct ConfigData
2013-01-30 21:36:11 +01:00
Max Kellermann
823c618d24
{encoder,output}_api.h: allow compiling as C++
2013-01-30 21:36:09 +01:00
Max Kellermann
51cb6a0a44
conf: move struct definitions to ConfigData.hxx
2013-01-30 21:36:07 +01:00
Max Kellermann
595b6a4f6c
ConfigFile: add enum ConfigOption
...
Look up top-level config options by enum (= integer), not by name
string.
2013-01-30 21:36:04 +01:00
Max Kellermann
daa4647712
ConfigOption: rename to ConfigTemplate
2013-01-30 19:05:33 +01:00
Max Kellermann
9cfaa9c7b0
ConfigFile: move code to ConfigOptions.cxx
2013-01-30 17:45:19 +01:00
Max Kellermann
c5ea586882
ConfigFile: split config_entry
...
The new struct ConfigOption is the compile-time description, and the
global array "config_params" contains the actual values.
2013-01-30 17:35:33 +01:00
Max Kellermann
f2a3a37dff
filter_config: convert to C++
2013-01-30 17:22:44 +01:00
Max Kellermann
01dd540d7e
decoder_list: convert to C++
2013-01-30 17:18:48 +01:00
Max Kellermann
8142080633
InotifyUpdate: use std::list instead of GList
...
Let STL manage the WatchDirectory allocations.
2013-01-30 16:44:55 +01:00
Max Kellermann
9920a3e8fc
InotifyUpdate: move code to destructor
2013-01-30 16:44:54 +01:00
Max Kellermann
f7d8e6c40c
InotifyUpdate: allocate the root dynamically
2013-01-30 16:41:17 +01:00
Max Kellermann
4ecf09f9e6
InotifyUpdate: use new/delete instead of GLib slices
2013-01-30 16:37:49 +01:00
Max Kellermann
47a8369d79
InotifyUpdate: rename struct watch_directory
2013-01-30 16:36:58 +01:00
Max Kellermann
6805fa2fa0
InotifyUpdate: use std::map instead of GTree
2013-01-30 16:27:55 +01:00
Max Kellermann
4d6b9611ae
UpdateContainer: remove duplicate unlock call
2013-01-30 16:27:38 +01:00
Max Kellermann
16afdfd874
ArchivePlugin: move instance methods to class ArchiveFile
2013-01-30 15:30:19 +01:00
Max Kellermann
701fff03d2
archive/bzip2: create file only after stream has been opened
...
Simplify error handling.
2013-01-30 15:27:23 +01:00
Max Kellermann
8e0575ca9b
archive/zzip: fix memory leak
2013-01-30 15:25:29 +01:00
Max Kellermann
5e8f51a963
output/httpd: use the BufferedSocket class for HttpdClient
2013-01-30 15:08:09 +01:00
Max Kellermann
be3d2188d6
event/SocketMonitor: wake up the event loop after flag change
2013-01-30 15:08:09 +01:00
Max Kellermann
18e429a87e
event/Loop: add method WakeUp()
2013-01-30 15:08:09 +01:00
Max Kellermann
3576a8fd9f
Main: delete the EventLoop after everything else
...
Fixes crash when another object attempts to access the EventLoop
during destruction.
2013-01-30 15:08:09 +01:00
Max Kellermann
f260cd031c
input/Rewind: remove bogus assertion
2013-01-30 15:05:54 +01:00
Max Kellermann
18c4b536f2
event/ServerSocket: add method GetEventLoop()
2013-01-30 14:23:01 +01:00
Max Kellermann
fa51db449f
ServerSocket: replace callback with virtual method
2013-01-30 14:16:04 +01:00
Max Kellermann
cb9a05ac77
output/httpd: safer cast, consider offset
2013-01-30 14:14:42 +01:00
Max Kellermann
f1f22019f5
output/httpd: forward-declare class HttpdClient
2013-01-30 13:42:16 +01:00
Max Kellermann
6d79a1cdfc
output/httpd: add constructor, destructor, Configure()
2013-01-30 13:41:27 +01:00
Max Kellermann
ad5eb2f8d6
ServerSocket: expose the class
...
Eliminate the C wrappers.
2013-01-30 13:40:56 +01:00
Max Kellermann
39d56d6b65
ServerSocket: move to libevent.a
2013-01-30 13:39:12 +01:00
Max Kellermann
a291415326
event/BufferedSocket: move output buffer to FullyBufferedSocket
...
BufferedSocket has just an input buffer, and FullyBufferedSocket adds
the output buffer.
2013-01-30 11:03:44 +01:00
Max Kellermann
4ad7456428
event/SocketMonitor: OnSocketReady() returns bool
2013-01-30 11:03:44 +01:00
Max Kellermann
73f36858bb
event/SocketMonitor: add methods Read(), Write()
2013-01-30 10:39:17 +01:00
Max Kellermann
fe3f0332f7
page: convert to C++
2013-01-30 09:18:52 +01:00
Max Kellermann
718fd97612
icy_server: convert to C++
2013-01-30 09:17:03 +01:00
Max Kellermann
f8ff45b212
icy_server: pass pointer to _metadata_page()
...
Don't use va_list.
2013-01-30 09:13:46 +01:00
Max Kellermann
f5c0b0d316
ArchiveFile: convert to a class
2013-01-29 23:26:51 +01:00
Max Kellermann
ba51045d9e
refcount: convert to C++
2013-01-29 23:20:19 +01:00
Max Kellermann
9f0fb8f6a8
ArchivePlugin: replace scan_reset(), scan_next() with visit()
...
Add the interface ArchiveVisitor.
2013-01-29 21:21:07 +01:00
Max Kellermann
a42f9fd4e2
ArchivePlugin: scan_next() returns const string
2013-01-29 21:11:04 +01:00
Max Kellermann
e66005563e
playlist/despotify: various code simplifications
2013-01-29 20:36:28 +01:00
Max Kellermann
8cad20585d
playlist/memory: use std::forward_list instead of GSList
2013-01-29 20:32:54 +01:00
Max Kellermann
a8b75dc4df
playlist/{asx,rss,soundcloud,xspf}: merge code to MemoryPlaylistProvider
2013-01-29 18:56:35 +01:00
Max Kellermann
e4455962c6
ClientSubscribe: remove obsolete typedef
2013-01-29 18:37:40 +01:00
Max Kellermann
20f85745e7
require GLib 2.24
2013-01-29 18:33:37 +01:00
Max Kellermann
feb8d5b82f
ConfigFile, CommandLine: use the Path class
2013-01-29 18:09:39 +01:00
Max Kellermann
eb8922f346
test/{read_conf,run_filter}: convert to C++
2013-01-29 17:23:58 +01:00
Max Kellermann
84eb95466b
output/osx: convert to C++
2013-01-29 16:59:21 +01:00
Max Kellermann
3dd8beb380
decoder/faad: use the newer NeAAC* API
...
Drop support for the old faacDec* API.
2013-01-29 16:17:15 +01:00
Max Kellermann
26a9ce7b29
output/{alsa,oss}: convert to C++
2013-01-29 14:32:32 +01:00
Max Kellermann
76417d4446
InputStream: use std::string
2013-01-28 23:41:45 +01:00
Max Kellermann
cffc78ad6a
InputStream: store references instead of pointers
2013-01-28 23:35:01 +01:00
Max Kellermann
dcf55c7e32
InputStream: add constructor/destructor
...
Eliminate input_stream_init() and input_stream_deinit().
2013-01-28 23:29:43 +01:00
Max Kellermann
e565cd4404
input/despotify: add constructor/destructor
2013-01-28 23:13:19 +01:00
Max Kellermann
5934ccbb74
input/despotify: rename class
2013-01-28 23:12:10 +01:00
Max Kellermann
e39969a0d0
input/iso9660: add constructor/destructor
2013-01-28 22:54:07 +01:00
Max Kellermann
d68185aa28
input/iso9660: rename the classes
2013-01-28 22:52:40 +01:00
Max Kellermann
4cab151ed2
input/zzip: add constructor/destructor
2013-01-28 22:48:04 +01:00
Max Kellermann
8ac9b77e5c
input/zzip: rename the classes
2013-01-28 22:43:59 +01:00
Max Kellermann
1b9da5d978
input/bzip2: add constructor/destructor
2013-01-28 22:39:09 +01:00
Max Kellermann
ab2b7358cb
archive/bzip2: rename the classes
2013-01-28 22:17:40 +01:00
Max Kellermann
8ceea85813
DatabaseLock, input/bzip2: remove obsolete Glib/gcc workaround
2013-01-28 22:17:40 +01:00
Max Kellermann
d0a812d2df
input/Soup: move code into the class
2013-01-28 22:00:24 +01:00
Max Kellermann
3dad2e1c0f
input/soup: rename the class
2013-01-28 21:59:40 +01:00
Max Kellermann
70e4399334
input/ffmpeg: add constructor/destructor
2013-01-28 21:46:38 +01:00
Max Kellermann
00f8c2d46f
input/ffmpeg: rename the class
2013-01-28 21:45:44 +01:00
Max Kellermann
0dd4b52b63
decoder/ffmpeg: require ffmpeg/libav 0.7.6
...
This is the version present in Ubuntu Oneiric, the oldest distribution
with gcc 4.6. Debian Squeeze is off target, because it has gcc 4.4,
which is unable to compile MPD anyway.
This commit drops all API compatibility hacks for older versions.
2013-01-28 21:32:14 +01:00
Max Kellermann
88c17926e4
decoder/mp4ff: delete obsolete plugin
...
The underlying library has been obsolete for many years.
2013-01-28 21:32:14 +01:00
Max Kellermann
541192c941
db/Proxy: explicitly request first element of array
...
Works around gcc 4.6 bug.
2013-01-28 21:32:14 +01:00
Max Kellermann
2e9f054ec0
audio_config: include cleanup
2013-01-28 20:30:47 +01:00
Max Kellermann
2aa34882b7
output/httpd: move functions into the HttpdOutput class
2013-01-27 23:23:46 +01:00
Max Kellermann
27f8ef2f33
output/httpd: rename struct httpd_output
2013-01-27 23:21:39 +01:00
Max Kellermann
2cbe21c791
ZeroconfAvahi: pass GMainContext to avahi_glib_poll_new()
2013-01-27 22:53:21 +01:00
Max Kellermann
0988056471
ZeroconfBonjour: use SocketMonitor instead of GIOChannel
2013-01-27 22:38:14 +01:00
Max Kellermann
95c3f57b30
zeroconf: convert to C++
2013-01-27 22:38:14 +01:00
Max Kellermann
068f191c0d
event/SocketMonitor: add method Steal()
2013-01-27 22:38:14 +01:00
Max Kellermann
a65afa8090
PlayerControl: work around std::nanf() not being available on MacPorts
2013-01-27 21:58:35 +01:00
Max Kellermann
8155784990
string_util: add fallback for strnlen()
...
Usually, when strndup() is not available, strndup() isn't either,
because both are POSIX 2008.
2013-01-27 21:43:27 +01:00
Denis Krjuchkov
e98e2a0b07
Path::FromUTF8() returns nulled instance on error, add error handling where required
2013-01-28 00:13:46 +06:00
Denis Krjuchkov
943064bb51
Path: convert remaining funcs to methods, keep fs_charset as std::string
2013-01-28 00:13:46 +06:00
Denis Krjuchkov
7149a8ae4f
Path: merge utf8_to_fs_charset() into Path::FromUTF8()
2013-01-28 00:13:45 +06:00
Denis Krjuchkov
3c7cf94643
Path: convert fs_charset_to_utf8() to static method Path::ToUTF8()
2013-01-28 00:13:45 +06:00
Denis Krjuchkov
3bd35d1883
Path: introduce MPD_PATH_MAX_UTF8
2013-01-28 00:13:45 +06:00
Max Kellermann
6f3d70b5e2
DecoderControl, InputStream: use Mutex/Cond instead of GMutex/GCond
2013-01-27 18:39:32 +01:00
Max Kellermann
257a0dee75
playlist/*: convert to C++
2013-01-27 17:38:09 +01:00
Denis Krjuchkov
e995cd928c
Path: define MPD_PATH_MAX to 260 on Windows
2013-01-26 11:18:12 +06:00
Denis Krjuchkov
292d7c3fdf
Path: ToUTF() returns std::string
2013-01-26 11:16:12 +06:00
Max Kellermann
0273cd44b0
input_stream: forward-declare the struct
...
Hide the definition from C code, to prepare the transition to C++.
2013-01-26 01:24:01 +01:00
Max Kellermann
3203a7dd8c
tag_file: convert to C++
2013-01-26 01:23:02 +01:00
Max Kellermann
86b0adc82c
playlist/*: convert to C++
2013-01-26 01:17:43 +01:00
Max Kellermann
ba49f20f68
decoder/ffmpeg: convert to C++
2013-01-26 01:17:43 +01:00
Denis Krjuchkov
a3ee26da64
Mapper: improve usage of Path class
2013-01-26 01:14:13 +01:00
Max Kellermann
a9b62a2ece
PlayerControl: add second Cond object
...
This fixes a deadlock bug introduced by 18076ac9
. After all, the
second Cond was necessary.
The problem: two threads can wait for a signal at the same time. The
player thread waits for the output thread to finish playback. The
main thread waits for the player thread to complete a command. The
output thread finishes playback, and sends a signal, which
unfortunately does not wake up the player thread, but the main
thread. The main thread sees that the command is still not finished,
and waits again. The signal is lost forever, and MPD is deadlocked.
2013-01-25 23:53:43 +01:00
Max Kellermann
49567f1f3e
input_{internal,plugin}: convert to C++
2013-01-25 22:43:01 +01:00
Max Kellermann
94fffb332b
archive/*: convert to C++
2013-01-24 19:18:58 +01:00
Max Kellermann
dc2e64c92b
DecoderControl: fix typo in assertion check
2013-01-23 18:02:40 +01:00
Denis Krjuchkov
ef93cdf4a8
Path: move to fs subdirectory
2013-01-22 01:24:53 +06:00
Denis Krjuchkov
4ad90e2d52
FileSystem: extract DirectoryReader, improve the rest
...
- DirectoryReader is extracted to separate header
- FileSystem.cxx/FileSystem.hxx/DirectoryReader.hxx moved to fs/ subdir
- Functions return true on success, instead of 0 (where applicable)
- ReadLink return result instead of out parameter
- UnlinkFile is renamed to RemoveFile
- CheckExists/CheckIsRegular/CheckIsDirectory are renamed
to PathExists/FileExists/DirectoryExists
2013-01-22 01:05:30 +06:00
Max Kellermann
7c0e4dfb56
input/archive: fix memory leak in error handler
2013-01-21 19:08:35 +01:00
Max Kellermann
9ec069104f
input,playlist/despotify: convert to C++
2013-01-21 19:01:10 +01:00
Max Kellermann
7d21d60dba
despotify_utils: fix indent
2013-01-21 19:00:50 +01:00
Max Kellermann
ed8562c300
despotify_utils: include cleanup
2013-01-21 19:00:01 +01:00
Max Kellermann
22ec1c3498
despotify_utils: add missing copyright header
2013-01-21 18:59:37 +01:00
Max Kellermann
9cc90b1fbe
input/cdio_paranoia: convert to C++
2013-01-21 17:58:30 +01:00
Max Kellermann
0c9f22507f
input/ffmpeg: convert to C++
2013-01-21 17:50:43 +01:00
Max Kellermann
9c870e4276
input/rewind: convert to C++
2013-01-21 17:36:19 +01:00
Max Kellermann
5cffe693b0
input/file,mms: convert to C++
2013-01-21 10:52:40 +01:00
Max Kellermann
e01615fd1e
input_internal.h: add extern "C"
2013-01-21 10:52:19 +01:00
Max Kellermann
3928c4e9ae
UpdateRemove: Mutex/Cond instead of GMutex/GCond
2013-01-21 10:42:47 +01:00
Max Kellermann
32799fef5c
DecoderControl: move functions into the class
2013-01-21 10:13:29 +01:00
Max Kellermann
e1b03b4a71
PlayerControl: move functions into the class
2013-01-20 17:48:23 +01:00
Denis Krjuchkov
e6ed592b8a
FileSystem: new library for Path-friendly file system routines
2013-01-20 19:08:36 +06:00
Denis Krjuchkov
6f4560184c
dummy.cxx: remove unused file
...
This file was used previously to force C++ linkage.
It's no longer required because most of the code is C++ anyway.
2013-01-19 12:45:50 +06:00
Max Kellermann
e5039c478a
Path: new class "Path" wraps filesystem path strings
2013-01-18 15:34:01 +01:00
Max Kellermann
8901514506
Playlist, Song: clarify parameter encoding
2013-01-18 15:34:01 +01:00
Max Kellermann
21fe376d1d
path: convert to C++
2013-01-17 00:43:27 +01:00
Max Kellermann
e22ef6c481
output/roar: convert to C++
2013-01-16 23:29:56 +01:00
Max Kellermann
2bb01093c0
Idle: don't wake up event loop on duplicate event
2013-01-16 23:27:17 +01:00
Max Kellermann
36c814d26e
Idle: use std::atomic instead of GMutex
2013-01-16 23:23:47 +01:00
Max Kellermann
d769b74d61
Main: fix comment typo
2013-01-16 23:23:47 +01:00
Max Kellermann
601495fa0f
ClientList: convert to a class
2013-01-16 23:00:13 +01:00
Max Kellermann
1998633739
ClientGlobal: move client_close_all() to ClientList.cxx
2013-01-16 22:56:52 +01:00
Max Kellermann
0194217f9d
Revert "ClientList: allow deleting clients in client_list_foreach() callback"
...
This reverts commit f56c6a18c1
. This
fix is not necessary anymore because clients are now being deleted by
the timer callback.
2013-01-16 22:49:51 +01:00
Max Kellermann
b0bbb8b693
Client: use TimeoutMonitor to track connection timeout
...
Don't use a global loop over the whole client list.
2013-01-16 21:51:08 +01:00
Max Kellermann
cab84af72e
Client: move "idle" functions into the class
2013-01-16 21:46:13 +01:00
Max Kellermann
74500eacca
Merge branch 'v0.17.x'
2013-01-16 20:05:26 +01:00
Brice Jaglin
1105e61f29
decoder/ffmpeg: support float planar audio
2013-01-16 19:54:54 +01:00
Max Kellermann
b7cf279d6d
zeroconf-avahi: eliminate "goto"
2013-01-16 00:23:00 +01:00
Max Kellermann
452a30d7af
input/Curl: break loop when remaining length becomes 0
...
Fixes assertion failure (regression).
2013-01-15 23:39:32 +01:00
Max Kellermann
49e79620fd
PlayerControl: initialise attribute "border_pause"
2013-01-15 23:21:14 +01:00
Max Kellermann
ae5a721df9
Playlist: initialise attribute "playing"
2013-01-15 23:09:18 +01:00
Max Kellermann
0dd5f2915a
ServerSocket: use the SocketMonitor class
2013-01-15 22:56:06 +01:00
Max Kellermann
a0ebd444ad
event/SocketMonitor: add method Open()
...
Allow creating a closed SocketMonitor instance.
2013-01-15 22:56:06 +01:00
Max Kellermann
0c6072c4e4
ServerSocket: move more code to methods
2013-01-15 22:53:14 +01:00
Max Kellermann
8917264110
ServerSocket, SocketUtil: use the SocketError library
...
Use WinSock errors on Windows.
2013-01-15 22:42:15 +01:00
Max Kellermann
e90d606f0a
socket_util: convert to C++
2013-01-15 22:41:56 +01:00
Max Kellermann
5bb2d64ddb
SocketError: merge duplicate FormatMessage() calls
...
Make a class that contains the formatting code and the buffer.
2013-01-15 22:41:56 +01:00
Max Kellermann
bc66dc45e6
server_socket: convert to C++
2013-01-15 21:42:55 +01:00
Max Kellermann
7087935656
output/httpd: convert to C++
2013-01-15 20:20:51 +01:00
Max Kellermann
5822daa63d
output_internal, ...: add extern "C"
2013-01-15 20:20:51 +01:00
Max Kellermann
4808c7ef39
encoder/{Vorbis,Opus}: use new/delete
2013-01-15 20:20:51 +01:00
Max Kellermann
7071126770
InotifySource: use the SocketMonitor class
2013-01-15 18:18:34 +01:00
Max Kellermann
2101daef5a
mixer/Alsa: use MultiSocketMonitor
2013-01-15 18:18:00 +01:00
Max Kellermann
083065f433
input/Curl: move code to class MultiSocketMonitor
2013-01-15 18:16:55 +01:00
Max Kellermann
4cfc4a5a94
input/Curl: simpler GPollFD initialisation
...
Using initializer list.
2013-01-15 18:16:38 +01:00
Max Kellermann
1c7ee737e6
input/Curl: don't remove/add modified GPollFD
...
Not necessary, GLib will pick up the updated GPollFD automatically.
2013-01-15 18:16:15 +01:00
Max Kellermann
39439b80f5
Client: rebase on the new BufferedSocket class
2013-01-15 12:15:33 +01:00
Max Kellermann
396480cf94
event/SocketMonitor: wrapper class for GSource + GPollFD
2013-01-15 11:00:48 +01:00
Max Kellermann
3e03527930
Client: move output buffer code to new class PeakBuffer
2013-01-15 10:59:28 +01:00
Max Kellermann
4fa724461e
util/fifo_buffer: add method _init()
2013-01-15 10:59:28 +01:00
Max Kellermann
1e2018ce83
Client: move connection functions into the class
2013-01-15 10:59:28 +01:00
Max Kellermann
3fcf17cb79
SignalHandlers: emit GlobalEvents::SHUTDOWN
...
.. instead of calling g_main_loop_quit(), which may dead-lock.
2013-01-15 10:59:28 +01:00
Max Kellermann
f9fc3a42cc
fifo_buffer: move to util/
2013-01-15 01:02:13 +01:00
Max Kellermann
76bc28ab1e
fifo_buffer: add extern "C"
2013-01-15 01:01:25 +01:00
Max Kellermann
f47f86ef02
socket_error: new library for errno / WSAGetLastError()
2013-01-15 00:53:12 +01:00
Max Kellermann
31268ffa24
io_error: add function new_error_errno()
2013-01-15 00:53:12 +01:00
Max Kellermann
0634be9724
Client*: include check.h / config.h
2013-01-14 23:50:01 +01:00
Dark Raven
f56c6a18c1
ClientList: allow deleting clients in client_list_foreach() callback
2013-01-14 11:24:54 +01:00
Max Kellermann
aa4c506fcd
Revert "ClientList.cxx: copy client list before iterating"
...
This reverts commit f53dadcc6d
, to
prepare for a better solution.
2013-01-14 11:24:29 +01:00
Max Kellermann
d3a479b7fa
event/TimeoutMonitor: wrapper for g_timeout_source_new()
2013-01-14 11:12:28 +01:00
Max Kellermann
92fb0e829a
StateFile: convert to a class
2013-01-14 11:00:22 +01:00
Max Kellermann
43a9928537
gcc.h: add C++11 "final" fallback macro
2013-01-14 10:56:42 +01:00
Max Kellermann
c8b408beae
InotifyQueue: convert to a class
2013-01-14 10:13:28 +01:00
Max Kellermann
8e3982dd42
InotifySource: convert to a class
2013-01-14 10:08:26 +01:00
Max Kellermann
e83f805b8f
Main, IOThread: move GMainLoop setup code to class EventLoop
2013-01-14 09:15:49 +01:00
Max Kellermann
be98afe34d
IOThread: use gcc.h
2013-01-14 09:15:49 +01:00
Denis Krjuchkov
f53dadcc6d
ClientList.cxx: copy client list before iterating
...
It seems that it is not safe to remove the item from std::list
while it's being iterated somewhere else.
This is a very simple quick fix to make things work
until some better solution is implemented.
2013-01-13 15:36:25 +06:00
Denis Krjuchkov
90ab65f8c7
WakeFD.cxx: use two sockets instead of pipe on Win32
...
Pipes aren't really pollable on Windows.
GLib emulates polling on pipes using separate reader/writer threads.
This adds significant overhead and keeps a strong dependency on GLib.
socketpair() function is absent on Windows as well.
We implement it here in a loose way.
2013-01-13 15:30:53 +06:00
Denis Krjuchkov
abb0fcb203
Win32Main.cxx: more clean shutdown
...
This change fixes two issues:
1) console_handler is called from a separate thread.
Thread-safe primitive is required for correct operation.
2) If console_handler returns TRUE our process is immediately terminated.
We use Sleep() to give main thread an opportunity to shutdown correctly.
2013-01-13 15:20:32 +06:00
Max Kellermann
0226440a2d
thread/{Mutex,Cond}: new backend for WIN32
...
Use CRITICAL_SECTION and CONDITION_VARIABLE. This requires Windows
Vista or newer. It fixes problems with GLib threading objects that
were implicitly created by static constructors before g_thread_init().
2013-01-11 11:11:07 +01:00
Max Kellermann
9d770d6084
GlobalEvents: #undef DELETE on Windows
...
Work around a build failure due to windows.h macro.
2013-01-11 11:10:46 +01:00
Max Kellermann
49f3855407
configure.ac: enable WIN32_LEAN_AND_MEAN on Windows
2013-01-11 11:06:16 +01:00
Denis Krjuchkov
a98aa66620
string_util.c: provide fallback strndup() implementation
...
This patch also adds extern "C" { } wrapper around string_util.h
to allow its usage in C++ code
2013-01-11 13:51:39 +06:00
Max Kellermann
631a268996
input/curl: use std::list instead of GQueue
2013-01-10 23:00:23 +01:00
Max Kellermann
85074f5ac6
icy_metadata: convert to C++
2013-01-10 22:33:16 +01:00
Max Kellermann
12a8ed39d4
input/Curl: add constructor to input_curl class
2013-01-10 22:25:57 +01:00
Max Kellermann
b9ac5e9e76
input/Curl: remove unused source/source_id attributes
2013-01-10 22:25:33 +01:00
Max Kellermann
2758a734a2
input/Curl: remove redundant attribute "url"
...
Use the "url" attribute from the base class instead.
2013-01-10 22:21:30 +01:00
Max Kellermann
01f3131c81
input/Curl: use std::forward_list instead of GSList
2013-01-10 20:52:58 +01:00
Max Kellermann
2ca9236864
input/Curl: remove unused attribute "fds"
2013-01-10 20:52:44 +01:00
Max Kellermann
3bb711837e
input/Curl: require libcurl 7.18
2013-01-10 20:46:47 +01:00
Max Kellermann
ed8798e82f
output/shout: refactor check_block_param() to a function
...
Don't use macro magic, don't dereference the block_param.
2013-01-10 18:46:33 +01:00
Max Kellermann
38474961fd
Log, ...: include cleanup
2013-01-10 18:34:40 +01:00
Max Kellermann
3dd38e7b7f
decoder/wavpack: convert to C++
2013-01-10 18:18:14 +01:00
Max Kellermann
3711a97657
decoder/wavpack: include cleanup
2013-01-10 18:18:02 +01:00
Max Kellermann
911411e630
conf: convert to C++
2013-01-10 18:18:02 +01:00
Max Kellermann
c02cc199bc
path: move code to IsSupportedCharset()
2013-01-10 18:06:21 +01:00
Max Kellermann
dd6c21e092
path: make the "win_charset" buffer static
...
It is illegal to use it after going out of scope.
2013-01-10 17:54:11 +01:00
Max Kellermann
b8cda53bd3
notify: convert to C++
2013-01-10 10:44:04 +01:00
Max Kellermann
e0a97a030f
io_thread: convert to C++
2013-01-10 10:33:20 +01:00
Max Kellermann
33ba288622
input/{curl,soup}: convert to C++
2013-01-10 10:23:20 +01:00
Max Kellermann
d5516dee00
input_stream: convert to C++ (internally)
2013-01-10 10:15:09 +01:00
Max Kellermann
06e0741a52
PlayerControl: switch to the Mutex/Cond classes
2013-01-10 10:12:54 +01:00
Max Kellermann
0b93445380
thread/Cond: new wrapper for pthread_cond_t or GCond
2013-01-10 10:03:19 +01:00
Max Kellermann
483ba5ea1c
thread/GLibMutex: new Mutex implementation
...
Switch WIN32 to this implementation to be able to use condition
variables, which is impossible with CriticalSection.
2013-01-10 10:03:18 +01:00
Max Kellermann
18076ac9b7
PlayerThread: use pc.cond instead of main_cond
...
The main_cond variable was completely unnecessary. The pc.cond object
can be used for both main->pc and pc->main.
2013-01-10 10:01:24 +01:00
Max Kellermann
ad15ca7104
DecoderControl: take ownership of client_cond
...
Don't let the "client" pass its own GCond. This was not used
consistently.
2013-01-10 10:01:18 +01:00
Max Kellermann
53117ac204
DecoderThread: signal the client after decoder finishes
...
Fixes potential dead lock bug.
2013-01-10 10:00:53 +01:00
Max Kellermann
51a8c109ab
thread/PosixMutex: fix indent
2013-01-10 10:00:52 +01:00
Max Kellermann
5c3c506638
GlobalEvents: lock-less operation using std::atomic
...
Use a bit field instead of a mutex-protected bool array.
2013-01-10 00:57:18 +01:00
Max Kellermann
ecd5eb02c5
event/WakeFD: use eventfd() if available
2013-01-10 00:10:01 +01:00
Max Kellermann
3be57dc4a3
fd_util: support eventfd()
2013-01-10 00:10:01 +01:00
Max Kellermann
a93caf3cfe
GlobalEvents: move code to class WakeFD
2013-01-09 23:47:38 +01:00
Max Kellermann
26ebfc04b0
EventPipe: rename to GlobalEvents
2013-01-09 23:31:43 +01:00
Max Kellermann
8782f6d232
EventPipe: use Mutex instead of GMutex
2013-01-09 23:30:07 +01:00
Max Kellermann
5faf443038
event_pipe.h: convert to C++
2013-01-09 22:37:47 +01:00
Max Kellermann
8eacd13ce7
sig_handlers, log: convert to C++
2013-01-09 22:33:06 +01:00
Max Kellermann
d3e1b72d38
mixer/{alsa,pulse}: convert to C++
2013-01-09 22:25:24 +01:00
Max Kellermann
b5e1bd5705
Playlist.hxx: move prototype to PlaylistGlobal.hxx
2013-01-09 22:23:37 +01:00
Max Kellermann
4bef0a1e62
Playlist: move playlist_increment_version_all() into the class
2013-01-09 22:21:16 +01:00
Max Kellermann
3e5f09be0b
event_pipe: convert to C++
2013-01-09 13:02:13 +01:00
Max Kellermann
e86e77ad67
idle: convert to C++
2013-01-09 13:01:38 +01:00
Max Kellermann
6b4374583a
ReplayGainCoinfig: initialize replay_gain_limit with default value
2013-01-09 12:25:14 +01:00
Max Kellermann
f8a99a391e
ReplayGainCoinfig: make DEFAULT_REPLAYGAIN_LIMIT static
2013-01-09 08:56:16 +01:00
Max Kellermann
2564f763d7
ClientList: don't use GLib
...
Use std::list instead of GList.
2013-01-09 08:12:44 +01:00
Max Kellermann
377a2b9e07
ClientList: add header ClientList.hxx
2013-01-09 08:08:36 +01:00
Max Kellermann
045993001c
zeroconf-bonjour: include Listen.hxx instead of listen.h
...
Should fix the OS X build.
2013-01-09 08:07:26 +01:00
Max Kellermann
affc446690
Queue: use std::stable_sort() instead of g_qsort_with_data()
2013-01-08 16:51:21 +01:00
Max Kellermann
255ee646c2
song: don't use GLib
2013-01-08 16:47:12 +01:00
Max Kellermann
0308ec564e
util/list: don't use GLib
2013-01-08 16:41:36 +01:00
Max Kellermann
6cafec8ae6
Queue: allocate memory with new/delete
2013-01-08 16:35:09 +01:00
Max Kellermann
8ef87be482
Queue: use signed integer instead of G_MAXUINT
...
The check for unsigned underflow is fragile and unreliable.
2013-01-08 16:33:33 +01:00
Max Kellermann
6c57047362
Queue: move code to new class IdTable
2013-01-08 16:11:25 +01:00
Max Kellermann
e29bc6912b
Queue: rename internal types
2013-01-08 16:05:10 +01:00
Max Kellermann
ce57b8b6df
Queue: move HASH_MULT and Item into the Queue class
2013-01-08 16:04:10 +01:00
Max Kellermann
d81a9029db
Queue: move GenerateId() and others into the class
2013-01-08 15:38:10 +01:00
Max Kellermann
bf4311cd9b
decoder/OggUtil,Opus: move code to new class OggSyncState
2013-01-08 11:04:14 +01:00
Max Kellermann
8f7adf79a3
decoder/Opus: read total time
2013-01-08 01:38:02 +01:00
Max Kellermann
97b164d03b
decoder/OggUtil: add OggExpectPageSeek()
2013-01-08 01:30:44 +01:00
Max Kellermann
61e7e531c2
decoder/Opus: move page reader into the decoder class
2013-01-08 01:22:11 +01:00
Max Kellermann
ceb652915f
decoder/Opus: move code to HandlePackets()
2013-01-08 01:20:03 +01:00
Max Kellermann
cdaf504ab8
decoder/Opus: make internal methods inline
2013-01-08 01:19:18 +01:00
Max Kellermann
9fb5aad157
decoder/OggUtil: add OggExpectFirstPage() and OggExpectPageIn()
2013-01-08 01:08:01 +01:00
Max Kellermann
a6301d45f4
decoder/Opus: use OggExpectPage() in main loop
2013-01-08 01:05:59 +01:00
Max Kellermann
b83d069266
decoder/OggUtil: add struct forward declarations
2013-01-08 01:02:06 +01:00
Max Kellermann
960b9a9664
input_stream: add method _cheap_seeking()
...
Move code from the Vorbis decoder plugin.
2013-01-07 23:25:08 +01:00
Max Kellermann
acb45caa42
decoder/ogg_codec: convert to C++
2013-01-07 22:14:52 +01:00
Max Kellermann
39060b528a
decoder/vorbis: convert to C++
2013-01-07 22:04:58 +01:00
Max Kellermann
4a36323f1b
Queue: don't include glib.h
2013-01-07 22:01:56 +01:00
Max Kellermann
c6281b2680
Queue: use C++ random instead of GLib's GRand
2013-01-07 22:00:57 +01:00
Max Kellermann
5b8b7d1412
util/LazyRandomEngine: lazy wrapper for std::mt19937
2013-01-07 21:27:51 +01:00
Max Kellermann
53e5139b99
Queue: move queue_shuffle_order_first() into the class
2013-01-07 21:26:22 +01:00
Max Kellermann
2b8ce83c9b
Queue: move queue_shuffle_order_range() into the class
2013-01-07 21:17:01 +01:00
Max Kellermann
52638c68f5
Playlist: convert functions to methods
2013-01-07 11:35:35 +01:00
Max Kellermann
400ff1c812
DatabaseQueue: pass DatabaseSelection to Add...()
2013-01-07 11:33:00 +01:00
Max Kellermann
d360f17a59
Client: add Partition reference attribute
...
playlist and player_control are deprecated.
2013-01-07 10:59:56 +01:00
Max Kellermann
a6ee6be960
TagPool: use the Mutex class instead of GStaticMutex
2013-01-07 10:49:21 +01:00
Max Kellermann
47911f9544
tag: convert to C++
2013-01-07 10:36:27 +01:00
Max Kellermann
48025c2279
DatabaseLock: use the Mutex class instead of GLib's GMutex
2013-01-07 10:34:55 +01:00
Max Kellermann
a68302e50b
thread/Mutex: don't use std::mutex
...
Use a custom pthread_mutex_t wrapper because std::mutex adds overhead.
2013-01-07 10:33:37 +01:00
Max Kellermann
333a08ebf9
replay_gain_info, ...: use cmath instead of math.h in C++ mode
...
Fixes build problems with mingw32.
2013-01-07 10:19:02 +01:00
Max Kellermann
989c9a7317
filter/replay_gain: convert to C++
2013-01-07 10:17:16 +01:00
Max Kellermann
975370c084
decoder_api.h, ...: add "extern C"
2013-01-07 10:07:40 +01:00
Max Kellermann
c3c776bc6a
mixer_all: convert to C++
2013-01-07 09:05:06 +01:00
Max Kellermann
9f4b906e6c
volume: convert to C++
2013-01-07 09:05:01 +01:00
Max Kellermann
804900df36
audio_config, volume, mixer_all: include cleanup
2013-01-07 08:54:01 +01:00
Max Kellermann
6936c0e2ab
Queue: use std::swap
2013-01-06 23:48:34 +01:00
Max Kellermann
108242042e
queue: convert all functions to methods
2013-01-06 21:33:58 +01:00
Max Kellermann
70652abf97
Queue: add constructor and destructor
2013-01-06 18:59:39 +01:00
Max Kellermann
e202b407ec
Playlist: add constructor and destructor
2013-01-06 18:59:33 +01:00
Max Kellermann
2cc89e60cc
DatabaseQueue: force passing playlist reference to std::bind()
...
Avoid implicit copy.
2013-01-06 18:59:01 +01:00
Max Kellermann
d536944beb
Partition: new class, container for Playlist and PlayerControl
...
This is the beginning of multi-player support. There will be support
for multiple Partition objects in one MPD process.
2013-01-05 02:43:00 +01:00
Max Kellermann
1a8ef3cdab
filter/ReplayGain: add method _set_mode()
...
Push the new mode to the filter instead of accessing global variables
through replay_gain_get_real_mode().
2013-01-05 02:40:33 +01:00
Max Kellermann
7be33eba48
DecoderAPI: don't use replay_gain_get_real_mode()
...
replay_gain_get_real_mode() accesses dangerous globals. Let's just
use the global variable replay_gain_mode, and assume "AUTO" means
"TRACK". At this point, this is the best we can do, because neither
the decoder nor the player should know about the current replay gain
mode. This is applied as a filter in the output thread.
2013-01-05 02:40:32 +01:00
Max Kellermann
46ed91b53d
DecoderAPI: _replay_gain() returns void
...
Let the function decoder_replay_gain() update
decoder_control::replay_gain_db instead of letting each decoder plugin
take care for that.
2013-01-05 02:40:29 +01:00
Max Kellermann
44d260f911
replay_gain_*: convert to C++
2013-01-04 23:50:58 +01:00
Max Kellermann
07249fc395
replay_gain_config: remove unused variable replay_gain_mode_names
2013-01-04 23:49:41 +01:00
Max Kellermann
bc1e8e01f3
DatabaseQueue: pass playlist object
...
Don't use the global variable "g_playlist".
2013-01-04 23:19:46 +01:00
Max Kellermann
fe8e77e556
Client: add "playlist" attribute
...
Reduce access to the global variable "g_playlist".
2013-01-04 23:07:11 +01:00
Max Kellermann
b0833084a6
PlayerControl: initialize all attributes
2013-01-04 23:04:42 +01:00
Max Kellermann
3cacaa5dad
Client: initialize num_subscriptions
2013-01-04 23:02:35 +01:00
Max Kellermann
e89bd30db5
Playlist: pass max_length to playlist_init()
...
Move the configuration lookup to Main.cxx.
2013-01-04 22:55:11 +01:00
Max Kellermann
2a9d933a81
PlayerControl: add constructor and destructor
2013-01-04 22:45:14 +01:00
Max Kellermann
81f3d893d9
player_control.h: convert header to C++
2013-01-04 22:31:53 +01:00
Max Kellermann
05c91082e3
playlist: convert to C++
2013-01-04 22:12:33 +01:00
Max Kellermann
7267558ba1
DecoderThread: move code to destructor
2013-01-04 22:02:52 +01:00
Max Kellermann
ac6803e7b7
DecoderInternal: initialize replay_gain_serial
2013-01-04 22:01:13 +01:00
Max Kellermann
ffabf8b013
DecoderInternal: move initializers to constructor
2013-01-04 21:59:03 +01:00
Max Kellermann
e9b71a0d28
MusicChunk: move functions to methods
2013-01-04 21:38:46 +01:00
Max Kellermann
efbfe66f21
Mutex: new wrapper for std::mutex, replaces GMutex
2013-01-04 21:24:29 +01:00
Max Kellermann
6886063703
MusicPipe: allocate with new/delete
2013-01-04 21:22:07 +01:00
Max Kellermann
c04e1ad401
mpd_error.h: add missing glib.h include
2013-01-04 21:20:10 +01:00
Max Kellermann
223b90d0d4
MusicBuffer: return memory to kernel when stopping playback
...
Use the new HugeAllocator as backend for SliceBuffer and call
HugeDiscard() when the last chunk was returned.
2013-01-04 20:48:28 +01:00
Max Kellermann
692b2cfb79
HugeAllocator: new memory allocator
2013-01-04 20:38:06 +01:00
Max Kellermann
447a86c922
SliceBuffer: lazy initialization
...
Avoid page faults on MPD startup. This saves a lot of memory for an
idle MPD.
2013-01-04 20:29:47 +01:00
Max Kellermann
e3a2bd3a1e
MusicBuffer: move code to template class SliceBuffer
2013-01-04 17:12:21 +01:00
Max Kellermann
f0be6a4b9e
MusicBuffer: allocate with new/delete
2013-01-04 17:03:50 +01:00
Max Kellermann
bdab5d5f6e
MusicBuffer: disable memory poisoning
...
This is harmful for memory usage, because it forces the kernel to
allocate physical memory, even before playback has started. No bug
has been found in a few years with this, so it's safe to assume that
this code is not necessary.
2013-01-04 15:42:15 +01:00
Max Kellermann
15a4246ead
Client, Inotify: use std::list instead of std::deque
...
Random access is not necessary here.
2013-01-04 14:44:06 +01:00
Max Kellermann
9a71845700
crossfade: convert to C++
2013-01-04 10:31:59 +01:00
Max Kellermann
22f0a1547c
buffer, pipe: convert to C++
2013-01-04 10:16:16 +01:00
Max Kellermann
de0ab43bc1
output_*: convert to C++
2013-01-04 09:46:41 +01:00
Max Kellermann
e12cc01aa4
decoder_*: convert to C++
2013-01-04 09:41:45 +01:00
Max Kellermann
71c697288b
pcm_convert: make C++ safe
2013-01-04 08:49:15 +01:00
Max Kellermann
a7d1daee93
CommandListBuilder: use std::list instead of GSList
2013-01-04 01:17:25 +01:00
Max Kellermann
77a99cc61d
CommandListBuilder: rename attributes
2013-01-04 01:16:22 +01:00
Max Kellermann
fb337418a5
Client: move code to class CommandListBuilder
2013-01-04 00:50:13 +01:00
Max Kellermann
9d312ab208
PlaylistFile: reuse classes PlaylistInfo and PlaylistVector
...
.. instead of rolling own classes.
2013-01-04 00:02:09 +01:00
Max Kellermann
06be0a1997
PlaylistInfo: remove the obsolete list_head attribute
2013-01-04 00:01:01 +01:00
Max Kellermann
9e4509b846
ClientNew: initialise the "idle" attributes
...
Make valgrind happy.
2013-01-03 23:59:45 +01:00
Max Kellermann
fc1f0eeda7
Client: add constructor and destructor
...
Move code from client_new() and client_close().
2013-01-03 23:59:45 +01:00
Max Kellermann
3d5c094804
PlaylistFile: fix memory leak
2013-01-03 23:59:45 +01:00
Max Kellermann
6837e5a6a0
Merge branch 'v0.17.x'
2013-01-03 22:53:53 +01:00
Max Kellermann
9761abf3b5
cue_parser: fix CUE files with only one track
...
Track whether _finish() has been called, and deliver all partial
results then. Fixes Mantis ticket 0003621.
2013-01-03 21:58:20 +01:00
Max Kellermann
599a562170
cue_parser: add code comments
2013-01-03 21:38:38 +01:00
Max Kellermann
31da4bc566
cue_parser: fix memory leak
2013-01-03 21:02:59 +01:00
Denis Krjuchkov
01a45a53aa
cmdline: bunch of fixes related to config file selection
...
- fix potential memory leak of system_path
'Potential' because currently g_get_system_config_dirs()
returns single entry on Windows, but that might change.
- remove incorrect g_free() call
It's not required at all because
g_get_system_config_dirs() returns GLib owned memory.
- remove extra semicolon
2013-01-03 19:45:51 +01:00
Max Kellermann
59400d38a9
Client: use std::deque for messages
2013-01-03 18:07:48 +01:00
Max Kellermann
5155b0f608
ClientMessage: turn into a class
2013-01-03 17:58:22 +01:00
Max Kellermann
d919f8d50a
ClientInternal: use std::set for subscriptions
2013-01-03 17:49:47 +01:00
Max Kellermann
d67aa7c19d
ClientNew: allocate/dispose client objects with new/delete
...
Prepare for adding non-trivial attributes.
2013-01-03 17:47:39 +01:00
Max Kellermann
7a982169c9
Client: rename the struct client to class Client
2013-01-03 17:36:28 +01:00
Max Kellermann
f2510d60fa
ls.h: rename to ls.hxx
2013-01-03 17:34:51 +01:00
Max Kellermann
1e0ea57dc4
cmdline: convert to C++
2013-01-03 17:31:38 +01:00
Max Kellermann
70b87f2eb6
client: convert to C++
2013-01-03 11:16:18 +01:00
Max Kellermann
94b2ee627c
decoder_print: convert to C++
2013-01-03 11:14:36 +01:00
Max Kellermann
e30a2dd2d7
listen: convert to C++
2013-01-03 11:05:44 +01:00
Max Kellermann
7e07daf8cb
ls: convert to C++
2013-01-03 11:01:02 +01:00
Max Kellermann
981906ecd1
output_print: convert to C++
2013-01-03 10:58:39 +01:00
Max Kellermann
90fe4c5124
TextFile: convert to a class
2013-01-03 10:16:05 +01:00
Max Kellermann
2452447c81
text_file: convert to C++
2013-01-03 10:12:41 +01:00
Max Kellermann
93f0bb8307
ExcludeList: convert to a class
2013-01-03 10:02:43 +01:00
Max Kellermann
47fc08bffe
exclude: convert to C++
2013-01-03 10:02:33 +01:00
Max Kellermann
c0f2024a2e
exclude: make variables more local
2013-01-03 10:02:26 +01:00
Max Kellermann
28f3e190c8
InotifyQueue: use std::deque instead of GSList
2013-01-03 10:02:26 +01:00
Max Kellermann
c4090b670d
Permission: use std::map instead of GHashTable
2013-01-03 03:11:39 +01:00
Max Kellermann
ddf112378b
permission: convert to C++
2013-01-03 03:09:50 +01:00
Max Kellermann
b25cce464a
client_new: convert to C++
2013-01-03 03:07:16 +01:00
Max Kellermann
a2297558ff
MessageCommands: use std::set instead of GHashTable
2013-01-03 02:40:21 +01:00
Max Kellermann
84cdf0cacc
StickerDatabase: use std::map instead of GHashTable
2013-01-03 02:39:08 +01:00
Max Kellermann
9e99e5bef9
strset: delete obsolete library
2013-01-03 02:31:47 +01:00
Max Kellermann
9023ba4a81
PlaylistVector: use std::list
2013-01-03 02:25:06 +01:00
Max Kellermann
83488848e1
Directory: initialise in default constructor
2013-01-03 02:12:34 +01:00
Max Kellermann
f5a92d6cc3
Directory: add constructor and destructor
2013-01-03 01:36:28 +01:00
Max Kellermann
3e8047e583
Directory: rename struct directory to Directory
2013-01-03 01:10:47 +01:00
Max Kellermann
440ac51cf0
database.h: rename to DatabaseSimple.hxx
2013-01-03 01:06:11 +01:00
Max Kellermann
d3293b889d
database.h: move prototypes to DatabaseGlue.hxx
2013-01-03 01:04:18 +01:00
Max Kellermann
b4b0b34e5a
database.h: eliminate db_*_song()
...
Use the C++ API.
2013-01-03 00:37:18 +01:00
Max Kellermann
fa3d1156a6
playlist_edit: convert to C++
2013-01-03 00:35:05 +01:00
Max Kellermann
0eb05b827f
Directory: turn functions to methods
2013-01-02 23:06:10 +01:00
Max Kellermann
0c245bc271
Directory: make the header C++ only
2013-01-02 22:52:08 +01:00
Max Kellermann
d65ad1bf15
mapper: convert to C++
2013-01-02 22:43:56 +01:00
Max Kellermann
43cbbe111b
song_update: convert to C++
2013-01-02 22:42:12 +01:00
Max Kellermann
9ceb8a717a
sticker: convert to C++
2013-01-02 22:25:17 +01:00
Max Kellermann
8331de424a
PlaylistInfo: rename class, use std::string
2013-01-02 22:16:05 +01:00
Max Kellermann
98dbdf72b3
PlaylistVector: move struct playlist_metadata to PlaylistInfo.hxx
2013-01-02 22:01:04 +01:00
Max Kellermann
51a2d09eb7
db_lock: convert to C++
2013-01-02 20:56:21 +01:00
Max Kellermann
22f0ef6d6b
don't include stdbool.h in C++ sources
...
The "bool" type is built-in.
2013-01-02 20:56:04 +01:00
Max Kellermann
975deca85b
{decoder,player}_thread: convert to C++
2013-01-02 20:36:28 +01:00
Max Kellermann
3bbb502387
*_print: convert to C++
2013-01-02 20:29:24 +01:00
Max Kellermann
0023dffd0b
playlist_vector: convert to C++
2013-01-02 20:25:20 +01:00
Max Kellermann
b715e522cf
db_save, state_file: convert to C++
2013-01-02 20:22:59 +01:00
Max Kellermann
4b0b8315a9
string_util: use const_cast in C++ mode
2013-01-02 20:22:59 +01:00
Max Kellermann
a654f146d1
update: convert to C++
2013-01-02 19:22:15 +01:00
Max Kellermann
67b46a151d
playlist_{any,song,queue}: convert to C++
2013-01-02 19:19:58 +01:00
Max Kellermann
83c7e1e129
configure.ac: disable C++ RTTI
...
RTTI adds overhead to the binary, and we don't need that.
2013-01-02 19:19:58 +01:00
Max Kellermann
a6371e2e66
configure.ac: disable C++ exceptions
...
We don't use exceptions currently. Since allowing exceptions means a
lot of overhead, this commit disables the feature.
2013-01-02 19:12:27 +01:00
Jurgen Kramer
dc32d1f3f3
Add tag support for DSD (DSDIFF & DSF) decoders
2012-10-27 11:42:34 +02:00
Max Kellermann
cbdaa1369f
Merge branch 'v0.17.x'
...
Conflicts:
src/PlaylistSave.cxx
2012-10-05 17:12:44 +02:00
Max Kellermann
8fb20fcdf8
playlist_song: fix potential charset bug in apply_song_metadata()
...
The song's URI must be UTF-8, not filesystem character set.
2012-10-05 17:01:04 +02:00
Max Kellermann
72bf226608
playlist_save: use temp2 instead of temp
...
Fixes minor Windows compatibility problem.
2012-10-05 16:55:30 +02:00
Max Kellermann
d4b5699403
decoder/ffmpeg: support planar audio
...
Implements Mantis feature request 3582.
2012-10-05 16:40:25 +02:00
Max Kellermann
1dc27be015
decoder/ffmpeg: fix playback of planar PCM data
...
Interleaving was completely wrong. This code was never used, so it
didn't have an effect.
2012-10-05 16:38:55 +02:00
Max Kellermann
230a3eb400
decoder/ffmpeg: move code to copy_interleave_frame2()
2012-10-05 16:37:07 +02:00
Max Kellermann
e39382dedd
decoder/ffmpeg: ignore negative time stamps
...
Works around assertion failure in decoder_timestamp().
2012-10-05 16:37:07 +02:00
Max Kellermann
fd016f4507
decoder/ffmpeg: show unsupported sample format name
...
Use av_get_sample_fmt_string() to obtain a human-readable string.
2012-10-05 15:24:53 +02:00
Max Kellermann
9d728b365d
decoder/ffmpeg: pass AVSampleFormat to ffmpeg_sample_format()
...
API simplification.
2012-10-05 15:14:57 +02:00
Max Kellermann
ddc0283339
decoder/ffmpeg: remove duplicate sample format error message
2012-10-05 14:52:30 +02:00
Max Kellermann
b8fdb452be
decoder/flac: support FLAC files inside archives
...
Implement the "scan_stream" method that can read tags from any
input_stream object. This requires a FLAC__IOCallbacks implementation
based on the input_stream API.
2012-10-04 10:37:09 +02:00
Max Kellermann
6b416ce6be
decoder/flac: move flac_scan_file2() to main plugin file
2012-10-04 10:32:52 +02:00
Max Kellermann
ef0392e854
input/file: use errno_quark()
2012-10-04 10:32:04 +02:00
Max Kellermann
efbf184fe8
PlaylistFile, client_file, tag_id3: don't use g_file_error_quark()
...
g_file_error_quark() is meant to be used with the GFileError enum
which does not correspond with errno, but must be converted with
g_file_error_from_errno().
At the same time, this removes g_strerror() use for
g_file_error_quark().
2012-10-04 10:31:53 +02:00
Max Kellermann
ebd90dbb1a
decoder/flac: move callbacks to class FLACInput
2012-10-02 19:59:49 +02:00
Max Kellermann
c9e700f079
decoder/flac: add ctor/dtor to struct flac_data
2012-10-02 19:47:31 +02:00
Max Kellermann
3c2d73d161
decoder/flac: add method FLACMetadataChain::Scan()
...
Merge common code.
2012-10-02 18:24:15 +02:00
Max Kellermann
343de8b8ab
decoder/flac: don't use FLAC__Metadata_SimpleIterator
...
Use the new FLACMetadataIterator C++ class, which is more powerful.
2012-10-02 17:38:21 +02:00
Max Kellermann
c645b906f3
decoder/flac: add C++ libFLAC wrappers
...
Not using libFLAC++ because this library adds a lot of overhead due to
virtual method calls. This new class library is zero-overhead.
2012-10-02 17:37:07 +02:00
Max Kellermann
9c1d1ef268
decoder/flac: eliminate the obsolete "track number" code
...
This has been deprecated by the "embcue" playlist plugin.
2012-10-02 17:36:54 +02:00
Max Kellermann
ade0483641
Merge branch 'v0.17.x'
2012-10-02 17:34:03 +02:00
Gregory Smith
03a401e477
OSX: Set mDataByteSize correctly on AudioBuffers during render.
2012-10-02 17:27:52 +02:00
Max Kellermann
e5fd1924db
decoder/flac: remove unused function flac_tag_load()
2012-10-02 11:39:10 +02:00
Max Kellermann
cbdd042adc
decoder/flac: use C++ compiler
2012-10-02 10:59:56 +02:00
Max Kellermann
ccd7104cdc
{decoder,encoder}/flac: drop support for libFLAC 1.1
2012-10-02 10:04:44 +02:00
Max Kellermann
1cf4b5ce47
encoder/opus: implement lookahead
...
The "opusinfo" program complained about preskip value that was too
small. This commit uses OPUS_GET_LOOKAHEAD to obtain the number of
frames that shall be silence at the beginning.
2012-10-02 09:42:03 +02:00
Max Kellermann
1badb3b5d5
encoder/opus: initialize the "granulepos" packet attribute
2012-10-02 09:16:44 +02:00
Max Kellermann
038d216f18
encoder/{vorbis,opus}: merge code to new class OggStream
2012-10-02 09:06:03 +02:00
Max Kellermann
9e3f843291
encoder/vorbis: accept floating point input samples
...
Improves quality by not squeezing 32 bit samples down to 16 bit, and
then back to 32 bit floating point. Reduces CPU usage by skipping a
conversion step.
2012-10-02 08:39:39 +02:00
Max Kellermann
e166ddf46f
pcm_channels: support floating point samples
2012-10-02 08:39:12 +02:00
Max Kellermann
31e1be7570
encoder/opus: call ogg_stream_flush() only in the last iteration
...
If there are multiple pages, the last partial page must be flushed.
2012-10-02 08:13:48 +02:00
Max Kellermann
d793b7c03f
encoder/opus: new encoder plugin for the Opus codec
2012-10-02 00:45:24 +02:00
Max Kellermann
9a715267ad
output/shout: move code to my_shout_configure()
...
Eliminate the evil goto.
2012-10-02 00:39:21 +02:00
Max Kellermann
eafa432cc6
encoder/vorbis: use C++ compiler
2012-10-02 00:37:19 +02:00
Max Kellermann
d95e538020
Merge branch 'v0.17.x'
2012-10-02 00:36:05 +02:00
Max Kellermann
adbe8c409a
output/{recorder,shout}: call encoder_read() in a loop
...
This is necessary for Ogg packets that span more than one page.
2012-10-02 00:26:40 +02:00
Max Kellermann
58e600f408
output/recorder: move code to _write_to_file()
2012-10-02 00:26:40 +02:00
Max Kellermann
d34e55c370
output/recorder: fix write() error check
...
We can only check for negative values if the variable is signed.
2012-10-02 00:20:42 +02:00
Max Kellermann
fbcbcdc001
output/recorder: make variables more local
2012-10-02 00:20:32 +02:00
Max Kellermann
4227a325a5
output/httpd: make variables more local
2012-10-02 00:20:13 +02:00
Max Kellermann
d115507502
encoder/vorbis: make variables more local
2012-10-02 00:20:01 +02:00
Max Kellermann
43d8252050
output/recorder, test/*: invoke encoder_read() after _open()
...
Make sure the file header gets written at the beginning, before
_write() gets called.
2012-10-02 00:18:18 +02:00
Max Kellermann
674b4ab647
output/shout: eliminate struct shout_buffer
...
Move the raw buffer to struct shout_data.
2012-10-02 00:18:04 +02:00
Max Kellermann
fe8fc1081a
output/shout: remove shout_buffer.len
...
Make it a local variable instead.
2012-10-02 00:17:53 +02:00
Max Kellermann
c7748fedab
output/shout: fix memory leak in error handler
2012-10-02 00:17:27 +02:00
Max Kellermann
c392efb481
output/shout: make variables more local
2012-10-02 00:17:17 +02:00
Max Kellermann
d0c3fa0150
main: use C++ compiler
2012-09-28 00:40:00 +02:00
Max Kellermann
609f6ce66d
PlaylistFile: use std::list instead of GPtrArray
2012-09-28 00:10:02 +02:00
Max Kellermann
7298b6c846
stored_playlist, playlist_save: use C++ compiler
2012-09-28 00:08:15 +02:00
Max Kellermann
acec9c4fd7
stored_playlist: make variables more local
2012-09-28 00:05:21 +02:00
Max Kellermann
9cdbde4f5e
output: new option "tags" may be used to disable sending tags
...
Implements Mantis ticket 0003340.
2012-09-25 23:31:07 +02:00
Max Kellermann
33364edfb3
decoder/adplug: new decoder plugin
2012-09-25 22:03:44 +02:00
Simon Hosie
5e9ccdec63
decoder/vorbis: skip 16 bit quantisation, provide float samples
...
Internally the vorbis (non-Tremor) decoder is working in floating
point, and it's not really necessary to cut the output back to 16-bit
if the soundcard or OS supports higher resolution.
The decoder can be trivially modified to bypass its internal
quantisation and produce floating-point output, and a separate
quantisation can be used as appropriate to the platform.
2012-09-25 21:27:50 +02:00
Max Kellermann
071aca60be
decoder/vorbis: rename local variables
2012-09-25 21:26:27 +02:00
Max Kellermann
133e4d5c51
decoder/vorbis: improved support for initial seek
...
Call decoder_get_command() before doing anything else.
2012-09-25 21:26:27 +02:00
Max Kellermann
fd56461d5f
decoder/vorbis: make variables more local
2012-09-25 21:11:38 +02:00
Max Kellermann
a5d8b27671
command.h: move function prototypes to AllCommands.h
2012-09-25 12:20:36 +02:00
Max Kellermann
f3f25d5d40
command.h: remove obsolete command_success() prototype
...
This lives in protocol/result.h now.
2012-09-25 12:20:33 +02:00
Max Kellermann
f118812c34
playlist: include cleanup
2012-09-25 12:20:30 +02:00
Max Kellermann
98dbc95913
rename CommandError.h to CommandError.hxx
2012-09-25 12:20:15 +02:00
Max Kellermann
145c1d214c
*Commands: remove extern"C" from C++ headers
2012-09-25 12:19:18 +02:00
Max Kellermann
b62a8e3e3e
command: add COMMAND_RETURN_IDLE
...
Eliminate the hack in handle_idle().
2012-09-25 12:04:20 +02:00
Max Kellermann
e47240931a
command: add documentation for "enum command_return"
2012-09-25 12:02:08 +02:00
Max Kellermann
a84874426d
command: remove enum integer values
...
Just use the values assigned by the compiler.
2012-09-25 12:01:53 +02:00
Max Kellermann
f38dfd9231
command: rename to AllCommands.cxx
2012-09-25 11:56:37 +02:00
Max Kellermann
510c4a3ef1
command: move remaining handlers to OtherCommands.cxx
2012-09-25 11:44:49 +02:00
Max Kellermann
e7e52c24f5
gcc.h: require gcc 4.6
...
We use range-based for and nullptr, which was not implemented prior to
gcc 4.6.
2012-09-25 11:39:46 +02:00
Max Kellermann
e2a574e2a0
Merge branch 'v0.17.x'
...
Conflicts:
src/locate.c
2012-09-25 11:39:01 +02:00
Max Kellermann
ba6ef53ef9
decoder_control: remove MixRamp debug messages
...
These are confusing, and since MixRamp development has ceased, not
useful to anybody.
2012-09-25 11:08:16 +02:00
Max Kellermann
7088a679a2
decoder/wavpack: support all APEv2 tags
...
WavPack tags are always APEv2, by definition. Reuse the tag_table
from tag_ape.c, instead of rolling our own.
2012-09-25 09:37:16 +02:00
Max Kellermann
04c02a1eb8
locate: cast enum tag_type to int before comparing with integer
...
Avoids clang pickiness. This code is not correct, but we'll fix that
another day.
2012-09-22 09:48:27 +02:00
Max Kellermann
1536b5a9d6
src/decoder/opus: new decoder plugin for the Opus codec
...
Using libopus and libogg.
2012-09-05 23:01:17 +02:00
Max Kellermann
bab756a5d0
decoder/{flac,vorbis}: move tag table to XiphTags.c
...
Merge duplicate data.
2012-09-05 22:56:57 +02:00
Max Kellermann
886255e38a
db/SimpleDatabasePlugin: fix memory leak in Visit()
...
When visiting a song, GetSong() was called, but this object was never
returned by calling ReturnSong(). This patch locks the database only
once in Visit() and passes the original song object to the visitor,
avoiding the copy.
2012-09-05 20:56:20 +02:00
Max Kellermann
0240e75426
db_lock: add C++ helper class ScopeDatabaseLock
2012-09-05 20:52:02 +02:00
Max Kellermann
7102ed8026
decoder/ogg_codec: return UNKNOWN on error
2012-09-04 13:46:12 +02:00
Max Kellermann
ebf481e1a1
decoder/ogg_common: rename to ogg_codec.c
2012-09-04 13:05:12 +02:00
Max Kellermann
5a52e91350
decoder/ogg_common: pass decoder to _type_detect()
...
Allow the function to be cancelled.
2012-09-04 12:49:02 +02:00
Max Kellermann
18e458154a
decoder/ogg_common: apply coding style
2012-09-04 11:52:18 +02:00
Max Kellermann
015e1ab183
decoder/_ogg_common: rename to ogg_common.c
2012-09-04 11:28:36 +02:00
Max Kellermann
2a4c799471
Merge branch 'v0.17.x'
2012-09-04 11:28:13 +02:00
Max Kellermann
41487426f5
decoder/_ogg_common: fix buffer size check
...
Fixes potential access to uninitialised memory.
2012-09-04 11:22:15 +02:00
Max Kellermann
0d24250aa7
decoder/_ogg_common: simplify the large "if" expression
2012-09-04 11:22:05 +02:00
Max Kellermann
013e8479af
AudioCompress: abort on out-of-memory
...
This library crashes on out-of-memory (NULL pointer dereference).
There's not much useful MPD can do in such a situation, so let's
explicitly abort instead, just like GLib does.
2012-09-03 22:45:33 +02:00
Max Kellermann
27535a7f78
update_walk: fix unsafe readlink() usage
2012-09-03 22:41:04 +02:00
Max Kellermann
333d226ed0
SongFilter: convert to a C++ class
2012-08-29 20:19:02 +02:00
Max Kellermann
04a9dec952
playlist_print: rename to PlaylistPrint.cxx
2012-08-29 20:17:13 +02:00
Max Kellermann
6ee76b7154
DatabaseSelection: add method Match()
2012-08-29 20:03:37 +02:00
Max Kellermann
36b1c08ad7
locate: rename to SongFilter.cxx
2012-08-29 19:12:26 +02:00
Max Kellermann
7b35d5e9d4
queue_print: rename to QueuePrint.cxx
2012-08-29 19:07:30 +02:00
Max Kellermann
6d4ca071a5
dbUtils.h: eliminate this header
2012-08-29 18:55:49 +02:00
Max Kellermann
684a3d30a6
command: move code to *Commands.cxx
2012-08-29 17:42:06 +02:00
Max Kellermann
25740d27bf
Stats: stats_print() returns void
2012-08-29 17:41:26 +02:00
Max Kellermann
fb0a52a34a
decoder/mad, output_thread: add gcc_unlikely()
2012-08-29 17:41:22 +02:00
Max Kellermann
def21cc87e
Merge branch 'v0.17.x'
...
Conflicts:
src/queue_save.c
2012-08-25 10:28:33 +02:00
Max Kellermann
acaa725478
playlist/cue: map "PERFORMER" to "artist" or "album artist"
...
Implements Mantis ticket 0003549.
2012-08-25 09:56:14 +02:00
Max Kellermann
f351550534
player_thread: disable cross-fading in "single" mode
...
This commit reimplements the core of the "single" mode. Instead of
doing the detection in the playlist code from the outside, it is moved
to the player thread, which gets a new option called "border_pause".
It will now pause playback exactly at the beginning of the new song,
making the feature more reliable.
Now that the player thread knows what will happen, it can suppress
cross-fading.
Fixes mantis tickets 0003055 and 0003166.
2012-08-25 09:38:41 +02:00
Max Kellermann
e8df7e8da5
Database*: fix nullptr dereference when no database is configured
2012-08-22 21:40:20 +02:00
Max Kellermann
af4252bc80
fd_util: make C++ safe
2012-08-22 15:51:56 +02:00
Max Kellermann
66ecf39efe
command: make "single" a bool
2012-08-21 19:38:08 +02:00
Max Kellermann
5ad21d7e98
queue_save: save song priorities
2012-08-21 19:17:14 +02:00
Max Kellermann
7968fa3779
ProxyDatabase: implement GetSong()
2012-08-16 00:29:25 +02:00
Max Kellermann
31009bb1f6
ProxyDatabase: clear libmpdclient errors in CheckError()
...
Auto-recover from soft errors.
2012-08-16 00:29:25 +02:00
Max Kellermann
3b8532f3fb
DatabasePlugin: add method ReturnSong()
...
Allow the plugin to allocate the GetSong() return value.
2012-08-16 00:04:14 +02:00
Max Kellermann
f45616e5f6
Merge branch 'v0.17.x'
2012-08-16 00:04:03 +02:00
Max Kellermann
ef5125f8f4
playlist_print: fix memory leak
2012-08-16 00:01:01 +02:00
Max Kellermann
bf2e07074b
playlist_song: pass const song to _check_load_song()
2012-08-16 00:00:50 +02:00
Max Kellermann
20695ef369
playlist_song: fix user-after-free bug
2012-08-16 00:00:21 +02:00
Max Kellermann
e391f4b17b
ProxyDatabase: pass "detached" objects to visitors
...
Fixes wrong object URIs with duplicate base names.
2012-08-15 23:10:59 +02:00
Max Kellermann
2bd344549b
queue: duplicate all song objects
...
Make sure the queue "owns" all song objects, so nobody else can free
them.
2012-08-15 23:10:00 +02:00
Max Kellermann
e96779de48
player_control: duplicate the song object
...
Make sure the player "owns" the next_song object, so nobody else can
free it.
2012-08-15 23:09:22 +02:00
Max Kellermann
eb54337c40
decoder_control: duplicate the song object
...
Make sure the decoder "owns" the song object, so nobody else can free
it.
2012-08-15 23:08:39 +02:00
Max Kellermann
916a020173
Song: add function song_dup_detached()
...
Initial support for "detached" songs that come from the database, but
are private copies.
2012-08-15 23:07:24 +02:00
Max Kellermann
c2e4fe983d
Song: add function song_equals()
...
decoder_is_current_song() now recognizes different instances of the
same physical song.
2012-08-15 23:06:59 +02:00
Max Kellermann
81e898375b
Song: move trivial inline functions up
2012-08-15 23:06:48 +02:00
Max Kellermann
3c0dea811d
DatabasePlugin: add method GetStats()
...
Optimize the ProxyDatabase by invoking "stats" on the peer, instead of
visiting all songs.
2012-08-15 23:05:08 +02:00
Max Kellermann
a6ac0f8965
DatabasePlugin: add method VisitUniqueTags()
...
Optimize the ProxyDatabase by invoking "list" on the peer, instead of
visiting all songs.
2012-08-15 23:02:27 +02:00
Max Kellermann
4e1eb03287
ProxyDatabase: obey visitor return values
2012-08-15 23:02:00 +02:00
Max Kellermann
fcf0f8291d
ProxyDatabasePlugin: add OO wrapper for mpd_entity
...
Let the C++ compiler take care for freeing the objects safely.
2012-08-15 23:01:08 +02:00
Max Kellermann
0ed71fa027
ProxyDatabasePlugin: move tag table to the global name space
2012-08-15 23:00:44 +02:00
Max Kellermann
affe21f7c1
db_visitor: delete obsolete header
2012-08-15 22:57:20 +02:00
Max Kellermann
9facf7897d
DatabasePrint: remove bogus "nonnull" attributes
2012-08-15 22:56:24 +02:00
Max Kellermann
8422402c39
Merge branch 'v0.17.x'
...
Conflicts:
src/player_thread.c
2012-08-15 22:56:11 +02:00
Max Kellermann
9374e0f445
player_thread: add local variable "start_ms"
...
Just in case "song" becomes invalid at some point.
2012-08-15 22:51:48 +02:00
Max Kellermann
19ed233118
playlist: fix unprotected player_control access
2012-08-15 22:47:08 +02:00
Max Kellermann
faa4fff4dd
filter/volume: include cleanup
2012-08-15 22:45:03 +02:00
Max Kellermann
2276e7677b
mapper: fix potential crash in file permission check
2012-08-15 22:44:13 +02:00
Max Kellermann
b5fde6dfa5
decoder_control: add function _is_current_song()
...
Replaces _current_song().
2012-08-15 17:58:15 +02:00
Max Kellermann
784d666a8e
decoder_control: add assertion to dc_get_error()
2012-08-15 17:58:09 +02:00
Max Kellermann
c035910df9
decoder_thread: create GError for mapper failure
...
Fixes crash.
2012-08-15 17:57:55 +02:00
Max Kellermann
efccb6ac82
Merge branch 'v0.17.x'
2012-08-15 01:04:34 +02:00
Max Kellermann
4a993cd79e
decoder/fluidsynth: add "sample_rate" setting
2012-08-15 00:57:32 +02:00
Max Kellermann
02325d2ede
decoder/fluidsynth: add "soundfont" setting
...
Replaces the old global "soundfont" which never worked.
2012-08-15 00:51:45 +02:00
Max Kellermann
9c83464b95
configure.ac: auto-detect libfluidsynth
...
Now that the libfluidsynth API was sanitized, we can enable the plugin
automatically if libfluidsynth is installed.
2012-08-15 00:48:52 +02:00
Max Kellermann
b1bbd70f0f
decoder/fluidsynth: stop playback at end of file
...
Use libfluidsynth's new function fluid_player_get_status().
2012-08-15 00:47:10 +02:00
Max Kellermann
c31d11bfe0
decoder/fluidsynth: don't duplicate path
...
The libfluidsynth now accepts const strings.
2012-08-15 00:39:22 +02:00
Max Kellermann
c8ec85d649
decoder/fluidsynth: check if file is really a MIDI
...
Use fluid_is_midifile() to verify the file format.
2012-08-15 00:36:04 +02:00
Max Kellermann
e291f3d257
decoder/fluidsynth: remove throttle (requires libfluidsynth 1.1)
...
The libfluidsynth API is now sane, and does not require real-time
decoding.
2012-08-15 00:29:38 +02:00
Max Kellermann
7d27d2ea5e
Merge branch 'v0.17.x'
2012-08-14 23:58:54 +02:00
Max Kellermann
dc22846d58
log: store duplicated path string
...
Don't free the string right after calling log_init_file(). Add a new
function log_deinit() that frees the string on shutdown.
This fixes cycling the log file after SIGHUP (Mantis ticket 0003524).
2012-08-14 23:16:46 +02:00
Max Kellermann
c9aaabb5d4
output/jack: implement method delay()
...
Eliminate the g_usleep() call.
2012-08-14 22:47:25 +02:00
Max Kellermann
335d5d5d72
output/pulse: implement method delay()
...
Reduce command latency while paused.
2012-08-14 22:30:46 +02:00
Max Kellermann
51d793bec1
output/pulse: simplify _wait_stream()
...
One large loop and only one pa_stream_get_state() call.
2012-08-14 22:22:55 +02:00
Max Kellermann
249dcd967e
output/httpd: move delay from _pause() to _delay()
2012-08-14 21:54:47 +02:00
Max Kellermann
302972e9fc
output/httpd: fix throttling bug after resuming playback
...
Reset the timer when paused and no client is connected.
This fixes Mantis ticket 0003527.
2012-08-14 21:39:33 +02:00
Max Kellermann
31b380b266
output/httpd: move code to _has_clients()
2012-08-14 20:22:32 +02:00
Max Kellermann
a869dfea85
timer: use monotonic clock if available
2012-08-14 19:07:31 +02:00
Max Kellermann
12838c6294
input/ffmpeg: remove fallback AV_VERSION_INT definition
...
This is part of libavutil.
2012-08-14 19:07:27 +02:00
Max Kellermann
5cc3338267
Merge branch 'v0.17.x'
...
Conflicts:
src/mapper.h
2012-08-14 02:39:03 +02:00
Max Kellermann
1ae8972859
mapper: fix non-UTF8 music directory name
...
Duplicate the music_dir variable: one encoded in UTF-8, and another
one using the configured filesystem character set. This fixes an
ancient MPD bug.
2012-08-14 02:28:04 +02:00
Max Kellermann
adcd2c8eac
playlist_song: use map_to_relative_path()
2012-08-14 02:25:19 +02:00
Max Kellermann
45ff355835
playlist_song: improve const-correctness
2012-08-14 02:24:16 +02:00
Max Kellermann
f8bf3afeae
playlist_song: move code to playlist_check_load_song()
2012-08-14 02:17:25 +02:00
Max Kellermann
a582deee2c
input_stream, main: remove obsolete GLib version checks
...
MPD requires GLib 2.16.
2012-08-14 01:57:53 +02:00
Max Kellermann
3047bdf653
Merge branch 'v0.17.x'
...
Conflicts:
NEWS
configure.ac
src/client_file.h
2012-08-13 07:59:19 +02:00
Anton Khirnov
12be9e818f
client_file: remove pure attribute from client_allow_file().
...
That function is not pure, it writes to error.
When marked as pure, the compiler is allowed to assume it does not do
anything to error, so it can remain NULL, which would result in an
invalid read in print_error().
2012-08-13 07:55:40 +02:00
Max Kellermann
a0478f98af
Directory: move code to directory_allocate()
2012-08-09 21:04:07 +02:00
Max Kellermann
d488d796f4
player_control: add GError attribute
...
Rewrite of the pc_get_error_message() function, now using a GError
object instead of the complicated "errored_song" attribute.
2012-08-08 22:54:49 +02:00
Max Kellermann
f794b1e1aa
output_all: add basic GError support
2012-08-08 22:48:59 +02:00
Max Kellermann
8c425c758c
decoder_control: add GError attribute
2012-08-08 22:38:16 +02:00
Max Kellermann
0b9e912297
player_control: rename attribute "error" to "error_type"
2012-08-08 22:29:09 +02:00
Max Kellermann
d35d2b269f
player_control: rename player_error enum values
2012-08-08 22:28:59 +02:00
Max Kellermann
fa84ed412d
player_control: remove unused enum player_error values
2012-08-08 22:28:49 +02:00
Max Kellermann
16951099d1
player_control: inline trivial functions
2012-08-08 22:27:00 +02:00
Max Kellermann
050ba302cb
song: use C++ compiler
2012-08-08 21:08:37 +02:00
Max Kellermann
c1f90a99f4
tag_pool: use GStaticMutex
...
Eliminates explicit global initialisation.
2012-08-08 21:01:25 +02:00
Max Kellermann
510097cc37
song: include cleanup
2012-08-08 20:14:24 +02:00
Max Kellermann
6a83721c55
directory: use gcc.h macros, not GLib
2012-08-08 20:07:47 +02:00
Max Kellermann
ca9795c30a
conf: add a "database" block
...
The new block overrides the "db_file" setting, and allows configuring
any database plugin.
2012-08-08 09:28:13 +02:00
Max Kellermann
dc2fa246a9
DatabaseGlue: look up the database plugin
...
No more hard-coded "simple" plugin.
2012-08-08 09:28:13 +02:00
Max Kellermann
b46bb611b3
DatabaseGlue: pass block to db_init()
...
Let the caller take care for legacy conversion.
2012-08-08 09:28:13 +02:00
Max Kellermann
aa55d759f5
DatabaseGlue: add function db_is_simple()
...
Preparing for non-"simple" database plugins.
2012-08-08 09:28:13 +02:00
Max Kellermann
2043579f71
main: don't call db_init() without database
...
Useless call.
2012-08-08 09:28:13 +02:00
Max Kellermann
346e31efa0
ProxyDatabasePlugin: obey the "recursive" flag
2012-08-08 09:28:13 +02:00
Max Kellermann
b504d63117
ProxyDatabasePlugin: use an artificial "root" directory
...
Fixes assertion failures in the Directory library.
2012-08-08 09:27:42 +02:00
Max Kellermann
b4b1728b6f
DatabasePrint: don't print Last-Modified if unknown
2012-08-08 09:27:42 +02:00
Max Kellermann
21792386d8
time_print: new library, function time_print()
...
Implements error checking for the gmtime_r() call, which was missing
in two code locations.
2012-08-08 09:27:12 +02:00
Max Kellermann
63a2ac21e1
ProxyDatabasePlugin: new database plugin using libmpdclient
...
Implementation incomplete, but sort-of-works. DumpDatabase works, but
MPD is still hard-coded on the "simple" plugin.
2012-08-08 01:20:45 +02:00
Max Kellermann
c42b206292
DatabaseCommands: allow empty criteria for "list"
...
Fixes regression.
2012-08-08 01:16:47 +02:00
Max Kellermann
733d6a6b16
DatabaseSelection: add "match" attribute
...
Let the database plugin do the match.
2012-08-08 00:55:02 +02:00
Max Kellermann
8d2725234e
DatabaseCommands: merge duplicate search/find code
2012-08-08 00:49:07 +02:00
Max Kellermann
0823711106
locate: add a per-item "fold_case" flag
...
Merge locate_song_search() and locate_song_match().
2012-08-08 00:47:45 +02:00
Max Kellermann
860e9eb8c9
locate: make "tag" unsigned
2012-08-08 00:45:46 +02:00
Max Kellermann
3d2092ee23
locate: make the structs opaque
2012-08-07 23:52:11 +02:00
Max Kellermann
8855efebc0
locate: don't allow empty list
2012-08-07 23:45:00 +02:00
Max Kellermann
7725577a53
locate: pass unsigned integer to _parse()
2012-08-07 23:44:43 +02:00
Max Kellermann
668e3f664f
locate: add "pure" attributes
2012-08-07 23:43:36 +02:00
Max Kellermann
9e51733c71
DatabaseCommands: remove stray locate_item_list_parse() call
2012-08-07 23:41:35 +02:00
Max Kellermann
6b39a5621d
locate: add "casefold" flag to parser
...
Fold the case during construction, without having to create another
copy.
2012-08-07 23:27:23 +02:00
Max Kellermann
0d46e11826
locate: remove unused function locate_item_free()
2012-08-07 23:27:08 +02:00
Max Kellermann
ff58207034
db_selection: rename to DatabaseSelection
2012-08-07 23:12:26 +02:00
Max Kellermann
b3d76b7e5c
db_print.h: rename to DatabasePrint.hxx
2012-08-07 23:10:34 +02:00
Max Kellermann
4d6c816abb
dbUtils.h: move to DatabaseQueue.hxx, DatabasePlaylist.hxx
2012-08-07 22:57:18 +02:00
Max Kellermann
f35ceaee0a
command: move code to DatabaseCommands.cxx
...
Prepare to use the DatabasePlugin C++ API directly.
2012-08-07 22:36:18 +02:00
Max Kellermann
a64a2a65a9
command: move print_error() to CommandError.cxx
...
Prepare for splitting command.c.
2012-08-07 22:26:14 +02:00
Max Kellermann
1a75abffa5
Database{Plugin,Visitor}: pass references
2012-08-07 21:32:08 +02:00
Max Kellermann
bb75e3ea55
DatabaseRegistry: list of plugins
2012-08-07 20:07:17 +02:00
Max Kellermann
6f3c65dc64
DatabaseGlue: remove db_walk(), db_visit()
...
Unused.
2012-08-02 19:15:01 +02:00
Max Kellermann
0a3ada4fea
stats: convert to C++
2012-08-02 19:14:53 +02:00
Max Kellermann
8bdf7917c4
db_print: convert to C++
2012-08-02 19:14:40 +02:00
Max Kellermann
67d16a086e
dbUtils: split to Database{Queue,Playlist}.cxx
2012-08-02 19:14:09 +02:00
Max Kellermann
b8018f12ba
DatabaseGlue: add function GetDatabase()
...
Allow using the object outside of DatabaseGlue.cxx.
2012-08-02 19:13:58 +02:00
Max Kellermann
607780b7f9
DatabasePlugin: add simpler Visit() wrapepr
2012-08-02 19:12:42 +02:00
Max Kellermann
af1c497759
DatabasePlugin: make Visit() const
2012-08-02 19:12:27 +02:00
Max Kellermann
8e331cfc65
gcc.h: re-add gcc_const and gcc_pure
...
Remove GLib dependency from some headers.
2012-08-02 19:12:18 +02:00
Max Kellermann
edf811fa02
DatabaseVisitor, ...: use GError forward declaration
2012-08-02 19:12:06 +02:00
Max Kellermann
9dc9459f3a
db_plugin: convert to C++
2012-08-01 09:59:12 +02:00
Max Kellermann
37b92967c5
gcc.h: require g++ 4.5 or newer
...
Soon we'll use C++11 lambdas which were implemented in gcc 4.5.
2012-08-01 09:59:12 +02:00
Max Kellermann
0d2abdb5d9
gcc.h: add fallback for C++11 "override"
2012-08-01 09:59:12 +02:00
Max Kellermann
79200a8611
decoder/sidplay: fix C++ compiler warnings
2012-08-01 09:59:12 +02:00
Max Kellermann
123ae985d5
util/list: make safe for C++
2012-08-01 09:59:12 +02:00
Max Kellermann
60ac702038
tcp_socket, ...: remove obsolet RAOP sources
2012-07-30 06:57:49 +02:00