Commit Graph

348 Commits

Author SHA1 Message Date
Max Kellermann
71a5c8b819 Main: allocate Instance on the stack 2019-05-29 21:22:25 +02:00
Max Kellermann
620a39afb4 thread/Slack: use std::chrono::duration 2019-05-29 21:11:32 +02:00
Max Kellermann
14cee01ba1 Main: simplify Android startup 2019-05-29 15:08:39 +02:00
Max Kellermann
c782fdb698 Main: use AtScopeExit() to free Android objects 2019-05-29 15:08:38 +02:00
Max Kellermann
49ba76167e Main: add overload with ConfigData parameter 2019-05-29 15:08:26 +02:00
Max Kellermann
93ab957800 Main: convert int return types to void 2019-05-29 14:52:58 +02:00
Max Kellermann
f764925edc Instance: use std::unique_ptr<> to manage the NeighborGlue pointer 2019-04-25 13:09:31 +02:00
Max Kellermann
692c8025a2 Main: use AtScopeExit() to call NeighborGlue::Close() 2019-04-25 13:03:51 +02:00
Max Kellermann
77c9081f78 sticker/Database: wrap in class StickerDatabase 2019-04-25 12:05:18 +02:00
Max Kellermann
5a3828ed4a sticker/*: rename source files, drop "Sticker" prefix 2019-04-24 15:15:19 +02:00
Max Kellermann
1b62adc894 Instance: add noexcept 2019-04-24 14:56:08 +02:00
Max Kellermann
72ebd5ebdd java/Object: add Object.toString() wrapper 2019-04-24 14:08:51 +02:00
Max Kellermann
fe32db17d7 client/Internal: rename to Config.hxx 2019-04-03 21:31:32 +02:00
Max Kellermann
1213d979f8 client/*: rename source files, remove "Client" prefix 2019-04-03 20:59:00 +02:00
Max Kellermann
cc28a7b67f Main: create Database on stack, move to Instance after Open() succeeded
This fixes use-after-free bug in SimpleDatabase::Close(), accessing
the `root` object which was already freed by the `catch` block in
Open().

By having the Database on the stack first, we can avoid calling
Close() on the failed-to-open Database from Instance's destructor.

Closes #482
2019-02-20 20:50:28 +01:00
Max Kellermann
8b5c33cecd Instance: use std::unique_ptr<> to manage the Database pointer 2019-02-20 20:48:20 +01:00
Max Kellermann
6c28adbcd2 db/Plugin: use std::unique_ptr<> to manage Database pointers 2019-02-20 20:43:31 +01:00
Max Kellermann
f70eb63879 Instance: eliminate FinishShutdownUpdate(), move code to destructor 2019-02-15 18:20:11 +01:00
Max Kellermann
99c23cf139 Instance: eliminate ShutdownDatabase(), move code to destructor
Destruct automatically, even if leaving the scope due to exception
being thrown.
2019-02-15 18:04:23 +01:00
Max Kellermann
e9c45a9140 playlist/Registry: add RAII class 2019-02-05 23:03:29 +01:00
Max Kellermann
a065c6e6b9 Main: use AtScopeExit() to call DeinitFS() 2019-02-05 23:02:50 +01:00
Max Kellermann
feb5ff9bd2 Mapper: remove empty function mapper_finish() 2019-02-05 23:01:09 +01:00
Max Kellermann
98c47d9d36 Instance: remove FinishShutdownPartitions()
The list of partitions is cleared automatically.
2019-02-05 22:53:02 +01:00
Max Kellermann
261a816b21 command/AllCommands: remove empty function command_finish() 2019-02-05 22:15:41 +01:00
Max Kellermann
7a23c123c8 decoder/List: add RAII class 2019-02-05 22:12:22 +01:00
Max Kellermann
9e73ea77b4 input/Init: add RAII class 2019-02-05 22:07:49 +01:00
Max Kellermann
848f6aa5ab Main: stop io_thread and rtio_thread automatically
They will be stopped by ~EventThread() when the `Instance` is deleted.
2019-02-05 21:49:59 +01:00
Max Kellermann
c9ba4f3f9c archive/List: add RAII class 2019-02-05 21:40:07 +01:00
Max Kellermann
096c23f27d unix/SignalHandlers: add RAII class 2019-02-05 21:36:51 +01:00
Max Kellermann
12f4a8255a Main: use DatabasePlugin::RequireStorage() 2018-11-19 19:39:37 +01:00
Max Kellermann
bda77ffc5b db/Interface: remove IsPlugin(), use dynamic_cast instead 2018-11-19 19:38:20 +01:00
Max Kellermann
f5c9071494 *: copyright year 2018 2018-10-31 17:54:59 +01:00
Max Kellermann
2ec94c0497 player/Control: start thread on demand
Keep MPD's footprint small until playback is requested.
2018-09-23 17:32:34 +02:00
Max Kellermann
8c638c50a3 player/Thread: remove obsolete buffered_before_play attribute 2018-09-23 16:50:04 +02:00
Max Kellermann
6db6d3c50c player/Thread: move StartPlayerThread() into PlayerControl 2018-09-21 17:14:19 +02:00
Max Kellermann
616abdda26 Merge branch 'v0.20.x' 2018-08-20 00:19:31 +02:00
Thomas Guillem
aff070bcbb android: add LogListener
A Java object to send logs on the android side.
2018-08-19 23:32:24 +02:00
Max Kellermann
cc64c715a2 db/update/Service: Enqueue() throws on error 2018-08-19 23:15:52 +02:00
Max Kellermann
9999914c74 Main: throw exception instead of calling FatalError() 2018-08-19 23:13:29 +02:00
Max Kellermann
140aeea300 Main: allocate ConfigData on the stack 2018-08-19 23:08:23 +02:00
Max Kellermann
afd0fe666a config/Global: move config_global_check() to Check.cxx 2018-08-19 23:01:30 +02:00
Max Kellermann
5f95c07305 config/Path: add InitPathParser()
Eliminate yet another access to the global ConfigData instance.
2018-08-19 22:29:39 +02:00
Max Kellermann
01d3777574 decoder/Thread, ...: log all exceptions 2018-08-09 11:14:40 +02:00
Max Kellermann
148c38fbb9 Main: use AtScopeExit() to delete the Instance 2018-08-06 11:42:46 +02:00
Max Kellermann
fbfefcc0a3 Main: call daemonize_finish() with AtScopeExit() 2018-08-06 10:47:06 +02:00
Max Kellermann
22192adbc8 lib/icu/Init: add class ScopeIcuInit 2018-08-02 10:17:31 +02:00
Max Kellermann
95acc4be07 Main: add "noexcept" 2018-08-01 20:16:40 +02:00
Max Kellermann
330a4cf573 Main: remove exception handler from mpd_main_after_fork()
Let MainOrThrow() forward it to mpd_main().
2018-08-01 20:15:54 +02:00
Max Kellermann
6ffbb151a0 Main: move log_deinit() call to mpd_main()
Deinitialize the logging library after the last exception handler,
because that one could still need it.

Use `AtScopeExit()` to ensure it's always called, even if an exception
was thrown.
2018-08-01 20:14:31 +02:00
Max Kellermann
271e49db5d Main: move code to MainOrThrow(), leaving exception handler in mpd_main() 2018-08-01 20:13:27 +02:00