Max Kellermann
b0b086d473
Main: move storage initialization to InitStorage()
2014-02-07 23:37:39 +01:00
Max Kellermann
6798af52b6
Mapper: obtain music directory from Storage
...
Eliminate duplicate variable.
2014-02-07 23:34:29 +01:00
Max Kellermann
4d5ebafa6d
Main: check the music directory
...
Move call from Mapper.cxx.
2014-02-07 23:29:20 +01:00
Max Kellermann
c45f205593
Main: chop separators from music directory
...
Move call from Mapper.cxx.
2014-02-07 23:13:24 +01:00
Max Kellermann
4b010df99e
Main: create Storage instance in glue_mapper_init()
...
Don't use the obsolete Mapper library to create it.
2014-02-07 22:54:18 +01:00
Max Kellermann
5e4dd4be9c
Main: allow playlist directory without music directory
2014-02-07 22:39:17 +01:00
Max Kellermann
f947274626
InotifyUpdate: use class Storage instead of Mapper.cxx
2014-02-07 22:30:40 +01:00
Max Kellermann
b2e3fdef0f
storage/local: hide the class declarations
...
Hide inside CreateLocalStorage().
2014-02-07 01:11:52 +01:00
Max Kellermann
c8c3f20840
storage/local: move to src/storage/plugins/
2014-02-05 19:26:21 +01:00
Max Kellermann
4c995eb498
db/UpdateWalk: move LocalStorage to Instance
...
Keep only a reference.
2014-02-05 17:58:13 +01:00
Max Kellermann
243c4e1e83
Main: remove unused global variable "main_thread"
2014-02-05 17:04:16 +01:00
Max Kellermann
d380db25be
Instance: add attribute "event_loop"
...
Replaces global variable "main_loop".
2014-02-05 00:09:36 +01:00
Max Kellermann
e8938b1069
MixerPlugin: add EventLoop& init() parameter
2014-02-05 00:02:02 +01:00
Max Kellermann
4a28333039
event/Loop: remove the dummy constructor argument
2014-02-05 00:00:03 +01:00
Max Kellermann
eec6d09959
db/update/Service: use DatabaseListener instead of Instance
...
Don't use the global variable "instance".
2014-02-04 18:54:54 +01:00
Max Kellermann
cf6281a5a7
Instance: add Database attribute
...
Move from db/DatabaseGlue.cxx, eliminating global variable.
2014-02-04 11:22:33 +01:00
Max Kellermann
f00710a57e
Main: create UpdateService instance in glue_db_init_and_load()
2014-02-04 11:22:32 +01:00
Max Kellermann
d76b6f878e
db/update/Service: add SimpleDatabase reference
...
Don't use the global variables from the DatabaseSimple library.
2014-02-04 09:05:32 +01:00
Max Kellermann
e545679265
Main: don't measure DatabaseGlobalDeinit() time
...
Useless information.
2014-02-01 00:39:42 +01:00
Max Kellermann
4465e2c46b
db: add compile-time option to disable database
2014-01-30 20:39:40 +01:00
Max Kellermann
c6725884bc
db/update: convert to OO API
...
Move global variables into the new classes. That may allow multiple
update threads for multiple databases one day.
2014-01-30 18:47:05 +01:00
Max Kellermann
a31738f6f1
Main, OutputThread: increase kernel timer slack (Linux)
...
Allows the kernel to combine timer wakeups with other processes,
reducing power usage.
2014-01-30 18:43:40 +01:00
Max Kellermann
4b044bd8e1
InotifyUpdate: pass EventLoop to mpd_inotify_init()
2014-01-29 18:36:32 +01:00
Max Kellermann
aeaf64b467
Listen: pass EventLoop to listen_global_init()
...
Don't use global variables.
2014-01-29 18:32:28 +01:00
Max Kellermann
f5a923b9d1
OutputAll: convert to class, move instance to class Partition
...
Another big chunk of code for multi-player support.
2014-01-28 09:20:53 +01:00
Max Kellermann
5c4a42caa0
neighbor: new subsystem to detect file servers on the local network
...
This commit adds the NeighborPlugin API which can be used to detect
nearby file servers that can be used by input plugins. This list of
servers is exported using the new "listneighbors" command. The idle
even "neighbor" notifies interested clients when a new neighbor is
found or an existing one is lost.
There's a lot missing currently: protocol&user documentation, and a
way to "mount" remote servers into the music database. Obviously,
some code from the UPnP database plugin can be moved to a neighbor
plugin.
2014-01-26 00:10:05 +01:00
Max Kellermann
68eda78704
Mixer*: move to mixer/
2014-01-24 16:44:32 +01:00
Max Kellermann
9d34fc394c
Database*: move to db/
2014-01-24 16:38:44 +01:00
Max Kellermann
973c9872f9
Sticker*: move to sticker/
2014-01-24 16:38:15 +01:00
Max Kellermann
299ff2b23f
move daemonization code to unix/
2014-01-24 16:37:21 +01:00
Max Kellermann
f8bfea8bae
Input*: move to input/
2014-01-24 16:33:33 +01:00
Max Kellermann
e199c33c6e
Client*: move to client/
2014-01-24 00:26:53 +01:00
Max Kellermann
08296cd66d
Update*: move to update/
2014-01-24 00:24:43 +01:00
Max Kellermann
197b503f3e
Config*: move to config/
2014-01-24 00:20:01 +01:00
Max Kellermann
6b70f5e490
Zeroconf*: move to zeroconf/
2014-01-24 00:14:54 +01:00
Max Kellermann
4aa6d39fd8
archive/*: move to archive/plugins/
2014-01-24 00:09:37 +01:00
Max Kellermann
51adaf2c47
decoder/*: move to decoder/plugins/
2014-01-24 00:02:24 +01:00
Max Kellermann
ea5b901bcc
output/*: move to output/plugins/
2014-01-23 23:49:50 +01:00
Max Kellermann
f1f19841bd
playlist/*: move to playlist/plugins/
2014-01-23 23:30:12 +01:00
Max Kellermann
0616667688
Main: glue_mapper_init() returns true if GetUserMusicDir() fails
...
Not a fatal error. Fixes assertion failure.
2014-01-22 16:28:19 +01:00
Max Kellermann
be47320a05
Daemon: fork as early as possible
...
Keep the parent process around until MPD has finished initializing.
This is important for libraries that are allergic to fork(), such as
libupnp.
2014-01-18 12:42:30 +01:00
Max Kellermann
3a6da7c594
Main: make variables more local
2014-01-18 11:34:13 +01:00
Max Kellermann
9909a80d6a
Main: eliminate variable "success"
2014-01-18 11:20:20 +01:00
Max Kellermann
4f83c60296
copyright year 2014
2014-01-13 22:31:55 +01:00
Max Kellermann
114df1f137
DatabasePlugin: add interface DatabaseListener
...
Allow database plugins to announce that they have been modified.
2014-01-11 01:01:54 +01:00
Max Kellermann
d5dfe7d457
configure.ac: add option "--disable-glib"
...
Allows building without GLib. This fails to compile currently,
because GLib is still used in the MPD core.
2013-12-15 18:43:12 +01:00
Denis Krjuchkov
e42637226f
Main: use standard directory API
2013-12-08 17:25:19 +06:00
Max Kellermann
1a002eb23d
PcmConvert: add pcm_convert_global_init()
...
Wrapper for pcm_resample_global_init(), just in case other PCM
libraries need initialization, too.
2013-11-29 11:00:57 +01:00
Max Kellermann
f90abe9530
include cleanup using iwyu
2013-11-28 11:50:54 +01:00
Denis Krjuchkov
957d187ae4
Main.cxx: initialize winsock before creating IO thread
...
Otherwise sockets can't be created during IO thread initialization.
2013-11-26 18:10:18 +06:00
Max Kellermann
51de8fd10a
Volume, Output: use new class PeriodClock instead of GTimer
2013-11-25 22:09:46 +01:00
Max Kellermann
529b4bd185
Stats: use monotonic clock instead of GTimer
...
Reduce GLib usage.
2013-11-24 21:14:38 +01:00
Max Kellermann
ecf12a60e8
Log: add level "DEFAULT"
...
Map LogLevel::INFO to G_LOG_LEVEL_INFO, and LogLevel::DEFAULT to
G_LOG_LEVEL_MESSAGE. Now client connect/disconnect message are only
logged on log_level "secure".
2013-11-04 22:27:49 +01:00
Max Kellermann
54abeab80b
increase default buffer size to 4 MB
...
2 MB was too small for cross-fading a 24 bit file. Increasing to 4 MB
is still not too large for weak machines, but is enough for
cross-fading.
2013-10-30 21:46:40 +01:00
Max Kellermann
a88c23b6e8
Main: check the g_get_user_special_dir() result
...
Fixes crash.
2013-10-30 16:14:44 +01:00
Max Kellermann
ae99135c8d
Main: convert anonymous enum to constexpr
2013-10-20 13:47:32 +02:00
Max Kellermann
5ec843dcc8
*Commands: move to src/command/
2013-10-20 13:41:04 +02:00
Max Kellermann
ff626ac763
*: use references instead of pointers
2013-10-19 18:48:38 +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
080ee87e07
fs/Path: move configuration code to Config.cxx
2013-10-17 22:29:03 +02:00
Max Kellermann
b93523c0b1
UpdateGlue: never pass null to update_enqueue()
2013-10-17 21:45:41 +02:00
Max Kellermann
32dfc11c23
Main: use ThreadId instead of GThread*
2013-10-17 19:28:34 +02:00
Max Kellermann
7de96275dd
ConfigData: use std::string for config_param::value
2013-10-15 22:49:01 +02:00
Max Kellermann
17c6db6c33
replay_gain_*.h: rename to *.hxx
2013-10-02 12:22:12 +02:00
Max Kellermann
ec883e1901
Stats: rename stats.h to Stats.hxx
2013-10-02 12:14:07 +02:00
Max Kellermann
060814daa8
Log: new logging library API
...
Prepare to migrate away from GLib. Currently, we're still using GLib
as a backend.
2013-10-02 08:57:55 +02:00
Max Kellermann
b2789c598e
PlayerThread: use {decoder,player}_control references
2013-09-26 22:53:40 +02:00
Max Kellermann
7ca0aedcfc
Main: fix crash if no database was configured
...
Add nullptr check, and return early from glue_db_init_and_load().
2013-09-26 17:33:46 +02:00
Max Kellermann
a2c4037a24
Main: use nullptr instead of NULL
2013-09-26 17:31:50 +02:00
Max Kellermann
1ee6a78cb7
Path: add FromUTF8() overload that returns an Error
2013-09-12 10:17:41 +02:00
Max Kellermann
5d5f21bfc5
Tag: compile-time initialisation of ignore_tag_items
...
Move to TagSettings.c and use C99 initializers.
2013-09-05 18:34:12 +02:00
Max Kellermann
2b676dc5fc
Tag: move configuration code to TagConfig.cxx
...
Allow using the Tag.cxx library without the Config library.
2013-09-05 18:27:08 +02:00
Max Kellermann
3f267b1795
Tag, ...: move to libtag.a
2013-09-05 18:26:56 +02:00
Max Kellermann
26d92c80ed
conf.h: remove obsolete header
...
Use only ConfigData.hxx in plugin sources to reduce header
dependencies.
2013-09-05 08:47:10 +02:00
Max Kellermann
9605e24655
conf.h: move constants to ConfigDefaults.hxx
2013-09-05 08:42:08 +02:00
Max Kellermann
29030b54c9
util/Error: new error passing library
...
Replaces GLib's GError.
2013-09-04 18:14:22 +02:00
Max Kellermann
4db119c01b
IOThread: use FatalError() on g_thread_create() error
...
New GLib versions don't fail.
2013-09-03 11:28:47 +02:00
Max Kellermann
b76a29a69a
ConfigPath: return a Path object
...
Migrate all callers to use Path directly, instead of doing the
conversion in each caller.
2013-08-07 19:59:09 +02:00
Max Kellermann
977004c350
event/DeferredMonitor: use EventLoop::AddIdle()
2013-08-07 19:38:10 +02:00
Max Kellermann
930128a7ea
SignalHandlers: move code to new class SignalMonitor
2013-08-07 10:56:33 +02:00
Max Kellermann
b70d38dc10
Makefile.am: move sources to libsystem.a
2013-08-07 10:31:31 +02:00
Max Kellermann
a27d105dcd
FatalError: new library to replace mpd_error.h
2013-08-07 10:08:36 +02:00
Max Kellermann
67e44b0f2c
daemon: convert to C++
2013-08-07 09:53:33 +02:00
Max Kellermann
65842cd99e
DatabasePlugin: pass config_param reference
2013-08-04 14:07:50 +02:00
Max Kellermann
06f898cc12
tag: convert to C++
2013-07-30 20:19:53 +02:00
Max Kellermann
cd1bb2bafa
Main: fix crash without state file
...
If no state file is configured, don't chek for state changes.
2013-07-30 08:31:02 +02:00
Max Kellermann
a9d2dc6144
pcm_resample: convert to C++
2013-07-30 00:04:16 +02:00
Max Kellermann
b2d3d15e97
Main: move global variables to struct Instance
...
More preparations for multi-player support.
2013-04-17 23:52:58 +02:00
Max Kellermann
4a800b311f
don't use g_thread_init() with GLib 2.32
...
Deprecated.
2013-04-17 01:54:14 +02:00
Max Kellermann
c654c7630a
pcm_*: move to src/pcm/
2013-04-09 01:24:52 +02:00
Max Kellermann
dca1115196
StateFile: schedule timer only after a change
...
Save the state file 2 minutes after the last change. This reduces the
disruptions by an idle MPD, and MPD can be paged out permanently until
it is used.
2013-04-08 23:11:36 +02:00
Denis Krjuchkov
2bb751d9fa
StateFile: use file system API, log in UTF-8
2013-02-02 20:52:04 +06: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
d664baff26
audio_{parser,config}: convert to C++
2013-01-30 21:47:12 +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
01dd540d7e
decoder_list: convert to C++
2013-01-30 17:18:48 +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
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
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
Max Kellermann
86b0adc82c
playlist/*: convert to C++
2013-01-26 01:17:43 +01:00
Max Kellermann
94fffb332b
archive/*: convert to C++
2013-01-24 19:18:58 +01:00
Denis Krjuchkov
ef93cdf4a8
Path: move to fs subdirectory
2013-01-22 01:24:53 +06:00
Max Kellermann
e1b03b4a71
PlayerControl: move functions into the class
2013-01-20 17:48:23 +01:00
Max Kellermann
e5039c478a
Path: new class "Path" wraps filesystem path strings
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
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
0dd5f2915a
ServerSocket: use the SocketMonitor class
2013-01-15 22:56:06 +01:00
Max Kellermann
92fb0e829a
StateFile: convert to a class
2013-01-14 11:00:22 +01:00
Max Kellermann
e83f805b8f
Main, IOThread: move GMainLoop setup code to class EventLoop
2013-01-14 09:15:49 +01:00
Max Kellermann
e0a97a030f
io_thread: convert to C++
2013-01-10 10:33:20 +01:00
Max Kellermann
d5516dee00
input_stream: convert to C++ (internally)
2013-01-10 10:15:09 +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
26ebfc04b0
EventPipe: rename to GlobalEvents
2013-01-09 23:31:43 +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
b5e1bd5705
Playlist.hxx: move prototype to PlaylistGlobal.hxx
2013-01-09 22:23:37 +01:00
Max Kellermann
e86e77ad67
idle: convert to C++
2013-01-09 13:01:38 +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
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
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
22f0a1547c
buffer, pipe: convert to C++
2013-01-04 10:16:16 +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
e30a2dd2d7
listen: convert to C++
2013-01-03 11:05:44 +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
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
d65ad1bf15
mapper: convert to C++
2013-01-02 22:43:56 +01:00
Max Kellermann
9ceb8a717a
sticker: convert to C++
2013-01-02 22:25:17 +01:00
Max Kellermann
975deca85b
{decoder,player}_thread: convert to C++
2013-01-02 20:36:28 +01:00
Max Kellermann
b715e522cf
db_save, state_file: convert to C++
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
d0c3fa0150
main: use C++ compiler
2012-09-28 00:40:00 +02:00