Max Kellermann
2f51285349
Merge branch 'v0.18.x'
2014-01-20 09:05:36 +01:00
Max Kellermann
ab9c9068d4
Queue: rename struct queue to Queue
...
Works around a build failure on Solaris because annoyingly, Solaris
reserves the name "queue". This rename was pending anyway.
2014-01-20 08:57:46 +01:00
Max Kellermann
6b4d7d7315
Queue: make the constructor "explicit"
2014-01-20 08:57:41 +01:00
Max Kellermann
64465c1318
Song: make the "parent" attribute mandatory
...
The Song class is only used for database songs now. A Song without a
Directory is not possible anymore.
2014-01-19 23:16:09 +01:00
Max Kellermann
a506adea41
Directory: use Song::Export()
2014-01-19 23:16:08 +01:00
Max Kellermann
f5ae1ce00b
LightSong: new class to be used by DatabasePlugin callbacks
...
Detach the Song class completely from the public API, only to be used
by SimpleDatabase and the update thread.
2014-01-19 17:04:51 +01:00
Max Kellermann
738d6f1040
db/proxy: simplify error handling in GetSong()
...
Check mpd_response_finish() before using mpd_song. Don't skip this
check even if the mpd_song is non-nullptr.
2014-01-19 11:37:42 +01:00
Max Kellermann
ba372197fb
db/simple: make borrowed_song_count "mutable"
...
Simpler to use than const_cast.
2014-01-19 11:23:02 +01:00
Max Kellermann
bde27ccec3
Tag: pack attributes tighter
...
This saves another 3% memory.
2014-01-19 03:11:01 +01:00
Max Kellermann
d2cf74027c
Song: embed the Tag object statically into class Song
...
Reduces overhead because we need to manage only one memory allocation.
According to valgrind/massif, we save 7%.
2014-01-19 02:58:55 +01:00
Max Kellermann
bc966577ff
Song: use the VarSize library
2014-01-18 19:24:55 +01:00
Max Kellermann
fdf4dff561
db/upnp: move Tag from UPnPDirObject to Song
...
The UPnPDirObject is a temporary object, we can move its contents.
This reduces runtime overhead.
2014-01-18 19:09:42 +01:00
Max Kellermann
fab6cbed75
db/upnp/Discovery: eliminate attribute "last_seen"
2014-01-18 16:28:12 +01:00
Max Kellermann
051eede1ed
db/upnp/Discovery: use monotonic clock instead of time()
2014-01-18 16:26:11 +01:00
Max Kellermann
0696cac50b
db/upnp/Discovery: eliminate full copy in getServer()
2014-01-18 16:18:51 +01:00
Max Kellermann
0c2485e86c
db/upnp: use getServer() in Visit()
...
Reduce bloat.
2014-01-18 16:13:33 +01:00
Max Kellermann
7d696a7063
db/upnp/Discovery: eliminate Error attribute
...
Move code to method Start() and add Error& parameters to several
methods.
2014-01-18 16:08:30 +01:00
Max Kellermann
53573e950f
db/upnp: remove unnecessary m_superdir nullptr checks
2014-01-18 16:02:21 +01:00
Max Kellermann
1e99983263
db/upnp: pass ContentDirectoryService references
2014-01-18 15:58:02 +01:00
Max Kellermann
5409e43fb5
db/upnp: cache m_path.back()
2014-01-18 15:44:41 +01:00
Max Kellermann
f33f891c54
db/upnp: add UpnpMakeAction() helper function
2014-01-18 15:27:54 +01:00
Max Kellermann
6e55552292
db/upnp/ixmlwrap: getFirstElementValue() returns const char *
...
Eliminate the std::string bloat.
2014-01-18 15:01:19 +01:00
Max Kellermann
e569f82dd3
db/upnp: merge duplicate nullptr check
2014-01-18 14:44:06 +01:00
Max Kellermann
1a4940bbda
db/upnp: free IXML_Document *request manually
2014-01-18 14:38:52 +01:00
Max Kellermann
22dd3c8048
db/upnp/Device: move code to method Parse()
...
Forward the Error to the caller.
2014-01-18 14:29:31 +01:00
Max Kellermann
04b7648e00
db/upnp/Device: use ContentDirectoryDescriptor's move operator
...
Reduce bloat.
2014-01-18 14:26:24 +01:00
Max Kellermann
be0759d465
db/upnp/Discovery: don't copy XML to std::string
...
Pass "const char *" to Expat.
2014-01-18 14:24:38 +01:00
Max Kellermann
339d939873
db/upnp/Discovery: fix memory leak
2014-01-18 14:03:18 +01:00
Max Kellermann
c1950e40e6
db/upnp: remove unused typedef DevServIt
2014-01-18 13:42:54 +01:00
Max Kellermann
ad76bad8fd
db/upnp: use move operator to assign XML CDATA
...
Reduce runtime bloat.
2014-01-18 13:39:31 +01:00
Max Kellermann
55737e4ff6
db/upnp/Util: trimstring() constructs string from buffer
...
Reduce overhead by omitting the part of the buffer that consists only
of whitespace.
2014-01-18 13:36:50 +01:00
Max Kellermann
f3b4ddee6c
db/upnp/Discovery: free the response body
...
Memory leak.
2014-01-18 13:08:48 +01:00
Max Kellermann
758b504cf3
db/upnp/Discovery: don't copy the response body
...
Bloat.
2014-01-18 13:07:42 +01:00
Max Kellermann
416f7c2600
db/upnp: don't hold mutex while downloading device description
...
Must not perform blocking I/O while holding a mutex.
2014-01-18 13:04:01 +01:00
Max Kellermann
b9f02f22c4
db/upnp: don't use WorkQueue for _ADVERTISEMENT_BYEBYE
...
Remove the ContentDirectoryDescriptor right away. Reduces bloat.
2014-01-18 12:56:35 +01:00
Max Kellermann
b635610409
db/upnp: include cleanup
2014-01-18 12:51:25 +01:00
Max Kellermann
d4d4d6217f
db/upnp: don't use LazyDatabase
...
Now that MPD forks early, this workaround is obsolete.
2014-01-18 12:48:28 +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
9f3ce7551a
PidFile: open in write-only mode
2014-01-18 12:42:12 +01:00
Max Kellermann
5f3b79e21d
Daemon: move code to class PidFile
2014-01-18 12:10:20 +01:00
Max Kellermann
56c12bd1ea
Daemon: don't use daemon(), always require fork()
...
Prepare for more advanced daemonization code, which will not work with
daemon(). Let's just require fork(). Everybody who supports daemon()
also supports fork().
2014-01-18 11:46:28 +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
a52cae1dba
pcm/Volume: make DSD a no-op
...
Kludge to work around DSD playback failure because the
ReplayGainFilterPlugin is always in the filter chain.
2014-01-17 23:57:30 +01:00
Max Kellermann
61b01f82ef
Mapper: add function map_song_detach()
...
Make the DetachedSong(Song) conversion constructor private. Everybody
should use map_song_detach() which will take over more
responsibilities soon.
2014-01-17 23:51:14 +01:00
Max Kellermann
75b847132a
QueueSave: use DatabaseDetachSong()
2014-01-17 23:49:53 +01:00
Max Kellermann
32ec672311
DatabaseSong: new library merging duplicate code
2014-01-17 22:58:27 +01:00
Max Kellermann
e2812f722d
db/upnp/Discovery: move callbacks and data structures into class
...
Eliminate global variables.
2014-01-17 10:13:04 +01:00
Max Kellermann
aa64a5328e
db/upnp: split cluCallback()
2014-01-17 09:46:51 +01:00
Max Kellermann
59510f509a
db/upnp: add local reference variables
...
Prepare to refactor some code.
2014-01-17 00:17:20 +01:00