Max Kellermann
fd754ff8f8
db/upnp/Directory: replace std::vector with a simple enum
...
Reduce bloat.
2014-01-22 09:32:11 +01:00
Max Kellermann
b7738e7af3
db/upnp/Directory: join all CDATA nodes for tag values
...
Expat can call CharacterData() multiple times if the CDATA contains
entity references. We need to collect all of them in one large
string.
2014-01-22 08:44:35 +01:00
Max Kellermann
99bebabac9
db/upnp/Directory: make "m_dir" private
2014-01-22 08:44:20 +01:00
Max Kellermann
0ed48b364a
db/upnp: merge duplicate branches in Namei()
2014-01-21 23:42:02 +01:00
Max Kellermann
b38b8b9c18
db/upnp: simplify Namei()
2014-01-21 23:37:27 +01:00
Max Kellermann
5434856136
db/upnp: use std::list instead of std::vector
...
Reduce overhead.
2014-01-21 23:33:28 +01:00
Max Kellermann
aa1eb2f40d
db/upnp: use iterator in Namei()
2014-01-21 23:32:42 +01:00
Max Kellermann
7260d7883c
db/upnp: move "objid" declaration down
...
Don't allocate the object when it's not needed.
2014-01-21 23:10:30 +01:00
Max Kellermann
154250f551
db/upnp: eliminate redundant Namei() parameter "oobjid"
...
The caller should better obtain the object id from the returned
UPnPDirObject instance.
2014-01-21 23:07:33 +01:00
Max Kellermann
3e4fb92cfb
db/upnp: remove redundant objid.empty() check from VisitServer()
...
If Namei() succeeds, the object id is guaranteed to be set.
2014-01-21 23:07:06 +01:00
Max Kellermann
0da713e278
db/upnp: use std::move() to extract server name
...
Reduce runtime overhead.
2014-01-21 22:57:54 +01:00
Max Kellermann
94cb1545b3
db/upnp: use vector::front() instead of [0]
2014-01-21 22:57:16 +01:00
Max Kellermann
411527a240
db/upnp: don't use stringToTokens() in ParseDuration()
...
Reduce bloat.
2014-01-21 22:52:12 +01:00
Max Kellermann
7777057d35
db/upnp: don't construct redundant empty vector<string> in Visit()
...
We know already that vpath is empty, let's use this instance.
2014-01-21 22:47:57 +01:00
Max Kellermann
dc5ef9ad01
db/upnp: simplify GetSong()
2014-01-21 22:43:04 +01:00
Max Kellermann
7471f65d95
LightSong: add attribute "real_uri"
...
The UPnP database plugin can now show relative song URIs for remote
songs.
2014-01-21 21:08:11 +01:00
Max Kellermann
5d4b450c52
DetachedSong: add attribute "real_uri"
...
Prepare for UPnP songs that retain there database identity.
2014-01-21 21:06:56 +01:00
Max Kellermann
483b1f51c9
DetachedSong: remove parameter names from "defaulted" constructors
...
Suppresses gcc warnings.
2014-01-21 21:06:56 +01:00
Max Kellermann
ecac7a629e
db/upnp: fix empty song URI
...
Fall back to UPnPDirObject::url if there is no override.
2014-01-21 21:02:21 +01:00
Max Kellermann
21209ff46b
DetachedSong: use "default" copy/move constructors
...
Remove unnecessary explicit code.
2014-01-21 20:38:13 +01:00
Chase Geigle
716bdc36fd
pcm/SoxrResampler: Add configurable quality levels
2014-01-21 20:35:26 +01:00
Max Kellermann
4f120f3714
PlaylistSong: modify the given song object in-place
...
Reduce bloat.
2014-01-21 00:28:37 +01:00
Max Kellermann
c727c86245
PlaylistSong: remove redundant "secure" check
...
This has been verified already in the caller.
2014-01-21 00:28:32 +01:00
Max Kellermann
82b4ec22be
PlaylistSong: recurse after applying base_uri
...
Allows applying map_to_relative_path() with base_uri.
2014-01-20 23:47:43 +01:00
Max Kellermann
501f1e6de0
PlaylistSong: remove the IsInDatabase() check
...
No caller passes a database song to this function, but if he does,
this check doesn't make sense.
2014-01-20 23:32:03 +01:00
Max Kellermann
414d5b648c
PlaylistSong: don't map relative URI to absolute path
...
This didn't make sense.
2014-01-20 23:31:08 +01:00
Max Kellermann
a237e7f860
CommandLine: show the current git tag and commit id
2014-01-20 23:31:08 +01:00
Max Kellermann
07a3bef25c
PlaylistSong: pass reference variables internally
2014-01-20 19:57:26 +01:00
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
Max Kellermann
a35c7bc81a
db/upnp: move the LibUPnP instance to class UpnpDatabase
...
Delete the object when closing the database.
2014-01-16 09:30:24 +01:00
Max Kellermann
02769929b3
db/upnp: remove useless static Mutex
2014-01-16 09:29:11 +01:00
Max Kellermann
1a09003a6e
db/upnp: move the UPnPDeviceDirectory instance to class UpnpDatabase
...
Delete the object when closing the database.
2014-01-16 09:08:04 +01:00
Max Kellermann
a827714823
db/upnp: don't initialize attributes to nullptr
...
Not necessary, these are not used.
2014-01-16 09:07:52 +01:00
Max Kellermann
8f9e76ca42
db/upnp: remove redundant m_root nullptr checks
2014-01-16 08:51:39 +01:00
Max Kellermann
478ace984a
db/upnp/WorkQueue: use emplace() and std::move()
2014-01-16 08:46:41 +01:00
Max Kellermann
028fd268b8
db/upnp/WorkQueue: simplify start()
2014-01-16 08:43:57 +01:00
Max Kellermann
876a095166
Directory: initialize "mtime" and "have_stat"
2014-01-15 18:53:53 +01:00
Max Kellermann
14c3ff58a4
db/upnp/WorkQueue: fix pthread_t[] allocation size
...
Was using the wrong variable.
2014-01-15 18:51:10 +01:00
Max Kellermann
2819b302c3
db/upnp/Object: remove obsolete attribute "m_title"
2014-01-15 18:36:01 +01:00
Max Kellermann
9fb82f9687
DetachedSong: add method Update()
...
Don't create an intermediate Song instance when all we want is a
DetachedSong.
2014-01-15 12:05:44 +01:00
Max Kellermann
df80deb070
DetachedSong: remove misplaced std::move()
2014-01-15 11:52:17 +01:00
Max Kellermann
5fb72d7c8f
Merge branch 'v0.18.x'
2014-01-15 11:47:49 +01:00
Max Kellermann
313d1d5d83
decoder/ffmpeg: support libav v10_alpha1
2014-01-15 11:33:18 +01:00
Max Kellermann
b7d6133593
decoder/ffmpeg: include cleanup
2014-01-15 11:31:51 +01:00
Max Kellermann
5b6bb114ad
decoder/ffmpeg: check for av_samples_get_buffer_size() errors
...
Fixes potential nullptr dereference.
2014-01-15 11:25:58 +01:00
Max Kellermann
56f082c9d4
util/PeakBuffer: fix nullptr dereference when peak_size==0
2014-01-15 11:24:29 +01:00
Max Kellermann
a1b798e555
SongFilter, TagConfig: cast TAG_NUM_OF_ITEM_TYPES to integer
...
Fixes clang warning.
2014-01-15 11:23:41 +01:00
Max Kellermann
c91e08fbfd
OutputAPI: fix typo in include guard
2014-01-15 11:22:59 +01:00
Max Kellermann
f1ca17f6a1
decoder/ffmpeg: check for av_samples_get_buffer_size() errors
...
Fixes potential nullptr dereference.
2014-01-14 23:16:07 +01:00
Max Kellermann
fe7cda57e4
util/PeakBuffer: fix nullptr dereference when peak_size==0
2014-01-14 23:07:04 +01:00
Max Kellermann
a3f9abcbd1
SongFilter, TagConfig: cast TAG_NUM_OF_ITEM_TYPES to integer
...
Fixes clang warning.
2014-01-14 22:40:07 +01:00