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