Commit Graph

214 Commits

Author SHA1 Message Date
Max Kellermann
33fc3af775 SongSort, ...: use libicu instead of GLib's g_utf8_*() 2014-02-24 20:39:37 +01:00
Max Kellermann
bfae92e307 Main: use INT_MAX instead of G_MAXUINT 2014-02-24 18:57:03 +01:00
Max Kellermann
4dcf0b8ae0 first Android release
Finally, MPD runs on Android.  For some small value of "runs".  Very
much work left, too much to describe.
2014-02-22 01:39:08 +01:00
Max Kellermann
3d4689756c Main: disable command-line parser and signal handlers on Android 2014-02-22 00:18:46 +01:00
Max Kellermann
04ba433ca6 Main: initialize Partition before Listener
Fixes nullptr dereference (regression by commit df5f9f4a).
2014-02-20 00:04:23 +01:00
Max Kellermann
df5f9f4a15 Listen: add Partition reference 2014-02-19 23:43:36 +01:00
Max Kellermann
150443b014 DatabasePlugin: add FLAG_REQUIRE_STORAGE
Ignore the storage configuration if FLAG_REQUIRE_STORAGE is not set in
the DatabasePlugin.
2014-02-19 23:24:17 +01:00
Max Kellermann
85b8675e7a db/Interface: add attribute "plugin"
The new method IsPlugin() replaces the "is_simple" flag.
2014-02-19 23:17:21 +01:00
Max Kellermann
8d6fedf817 Mixer: add class MixerListener
Use a listener interface instead of GlobalEvents.
2014-02-19 21:40:14 +01:00
Max Kellermann
0053cd0d0d Main: disable inotify check without database
Fix build failure.
2014-02-18 21:47:01 +01:00
Max Kellermann
91729437a0 Main: initialize Database before Storage 2014-02-17 22:14:00 +01:00
Max Kellermann
3af7af0b8f Main: move code to InitDatabaseAndStorage() 2014-02-17 22:13:53 +01:00
Max Kellermann
de160bb2d1 Main: move code to db/Configured.cxx 2014-02-17 22:13:53 +01:00
Max Kellermann
ff62b6742b Main: check if database exists before attempting to close it
Fixes nullptr dereference.
2014-02-17 22:13:53 +01:00
Max Kellermann
6da0af94df db/DatabaseSimple: remove obsolete header 2014-02-17 20:44:03 +01:00
Max Kellermann
a9fefcf600 Main: wrap the Storage instance in CompositeStorage 2014-02-09 11:07:08 +01:00
Max Kellermann
37b6899660 Main: move code to storage/Configured.cxx 2014-02-09 08:09:47 +01:00
Max Kellermann
3fdc678aae Main: support arbitrary storage plugins 2014-02-08 00:04:29 +01:00
Max Kellermann
be081929f4 storage/local: remove utf8 path from constructor
Build the UTF-8 version of the path automatically in the constructor.
2014-02-07 23:41:06 +01:00
Max Kellermann
b0b086d473 Main: move storage initialization to InitStorage() 2014-02-07 23:37:39 +01:00
Max Kellermann
6798af52b6 Mapper: obtain music directory from Storage
Eliminate duplicate variable.
2014-02-07 23:34:29 +01:00
Max Kellermann
4d5ebafa6d Main: check the music directory
Move call from Mapper.cxx.
2014-02-07 23:29:20 +01:00
Max Kellermann
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