Max Kellermann 
							
						 
					 
					
						
						
							
						
						b53a23b51b 
					 
					
						
						
							
							decoder/flac: call FlacSubmitToClient() again after seeking  
						
						... 
						
						
						
						See code comment. 
						
						
					 
					
						2018-02-17 13:33:51 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						2aad015392 
					 
					
						
						
							
							decoder/flac: move code to FlacSubmitToClient()  
						
						
						
						
					 
					
						2018-02-17 13:33:48 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						986ec877b0 
					 
					
						
						
							
							decoder/Bridge: truncate last chunk at the exact end_time  
						
						... 
						
						
						
						Instead of passing whole chunks to the MusicPipe and checking the
end_time after each chunk, truncate the last chunk if it would exceed
the end_time.  This requires keeping track of the absolute PCM frame
number.
This fixes a problem with gapless CUE song transitions: a small part
of the following song was always played twice.
Closes  #113  
						
						
					 
					
						2018-02-17 13:10:00 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						a68f2cb9fa 
					 
					
						
						
							
							input/InputPlugin: add API documentation  
						
						
						
						
					 
					
						2018-02-17 10:32:17 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						5f5be823f3 
					 
					
						
						
							
							input/RemoteTagScanner: add API documentation  
						
						
						
						
					 
					
						2018-02-17 08:49:35 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						bfc886cd54 
					 
					
						
						
							
							decoder/Client: update API documentation  
						
						
						
						
					 
					
						2018-02-17 08:20:07 +01:00 
						 
				 
			
				
					
						
							
							
								cathugger 
							
						 
					 
					
						
						
							
						
						c43ea74b30 
					 
					
						
						
							
							encoder/opus: initialize granulepos to 0  
						
						... 
						
						
						
						it was uninitialized before 
						
						
					 
					
						2018-02-17 01:22:17 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						d29d186d62 
					 
					
						
						
							
							output/alsa: use a new I/O thread with real-time scheduling  
						
						... 
						
						
						
						The normal I/O event thread can have a large latency, e.g. when
libgnutls loads all TLS CA certificates for a https connect.  This
makes it unreliable for the ALSA I/O notifications, and causes ring
buffer xruns.  To avoid interfering with high latency events such as
CURL's, we move the ALSA I/O events to a separate I/O thread which
also obtains real-time scheduling (if possible).
Closes  #221  
						
						
					 
					
						2018-02-16 22:38:55 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						61f2ce67dd 
					 
					
						
						
							
							decoder/HybridDSD: implement seeking  
						
						
						
						
					 
					
						2018-02-13 09:53:05 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						60dbf1bea0 
					 
					
						
						
							
							decoder/HybridDSD: calculate bit rate  
						
						
						
						
					 
					
						2018-02-13 09:41:07 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						58bb866e2d 
					 
					
						
						
							
							decoder/HybridDSD: add code comments  
						
						
						
						
					 
					
						2018-02-13 09:29:58 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						b2ec5d0f01 
					 
					
						
						
							
							decoder/HybridDSD: new decoder plugin for Hybrid DSD  
						
						
						
						
					 
					
						2018-02-13 00:00:00 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						65bbb0e0aa 
					 
					
						
						
							
							Merge tag 'v0.20.17'  
						
						... 
						
						
						
						release v0.20.17 
						
						
					 
					
						2018-02-11 13:22:43 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						bede564618 
					 
					
						
						
							
							mixer/alsa: work around rounding error at volume 0  
						
						... 
						
						
						
						Due to rounding errors, a slightly negative value can be passed to
set_normalized_volume(), which will make the log10() call fail.
Actually, volume 0 is already failing because log10(0) is illegal.  So
let's fix this by implementing two corner cases: <=0 and >=100.
Closes  #212  
						
						
					 
					
						2018-02-10 09:07:51 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						9187a08106 
					 
					
						
						
							
							lib/curl: remove .netrc support on Android  
						
						... 
						
						
						
						Not needed on Android, and the implementation uses getpwuid_r() which
is unavailable on old Android versions. 
						
						
					 
					
						2018-02-09 23:14:29 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						3859a50466 
					 
					
						
						
							
							python/build/libs.py: convert CURL edit to quilt patch  
						
						
						
						
					 
					
						2018-02-09 23:14:27 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						6ba918b203 
					 
					
						
						
							
							input/file: don't use posix_fadvise() on Android  
						
						... 
						
						
						
						Requires Android API 21, but we want to support older versions as
well. 
						
						
					 
					
						2018-02-09 22:54:22 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						e8b70dbca4 
					 
					
						
						
							
							SongSave, queue/PlaylistState, tag/ReplayGain: use portable atof() wrappers  
						
						... 
						
						
						
						For Android pre-5.0 compatibility (#213 ). 
						
						
					 
					
						2018-02-09 22:54:22 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						0f8d223c7f 
					 
					
						
						
							
							protocol/ArgParser: move strtof()/strtod() switch to util/NumberParser.hxx  
						
						
						
						
					 
					
						2018-02-09 22:54:22 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						19a2885fd5 
					 
					
						
						
							
							protocol/ArgParser: use strtod() instead of strtof() on Android  
						
						... 
						
						
						
						For Android pre-5.0 compatibility (#213 ). 
						
						
					 
					
						2018-02-09 22:54:22 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						e46fbd0780 
					 
					
						
						
							
							filter/convert: set the PcmConvert instance only if it was initialized  
						
						... 
						
						
						
						Fixes valgrind warning. 
						
						
					 
					
						2018-02-09 19:05:45 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						56b74ad990 
					 
					
						
						
							
							filter/convert: add method IsActive()  
						
						
						
						
					 
					
						2018-02-09 19:04:45 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						6de92bb42b 
					 
					
						
						
							
							pcm/Order: fix size calculation with 8 channels  
						
						... 
						
						
						
						This was a buffer overflow bug which could cause MPD crahes when
playing back 8 channels with the ALSA output plugin.
Closes  #216  
						
						
					 
					
						2018-02-09 19:01:12 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						c801936e53 
					 
					
						
						
							
							db/update/Service: set the update thread name  
						
						
						
						
					 
					
						2018-02-09 18:48:14 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						817656504d 
					 
					
						
						
							
							thread/Util: implement system call wrapper for sched_setscheduler()  
						
						... 
						
						
						
						There is a POSIX definition for sched_setscheduler(), but Linux does
not implement that; instead of changing the process's scheduler, it
only affects one thread.  This has caused some confusion among
application developers and C library developers.
While glibc implements Linux semantics, Musl has made their
sched_setscheduler() function an always-failing no-op, causing the
error message "sched_setscheduler failed: Function not implemented".
 http://git.musl-libc.org/cgit/musl/commit/src/sched/sched_setscheduler.c?id=1e21e78bf7a5c24c217446d8760be7b7188711c2 
Instead of relying on the C library which may be unreliable here, we
now roll our own system call wrapper.
Closes  #218  
						
						
					 
					
						2018-02-09 18:43:45 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						6f00f97b66 
					 
					
						
						
							
							thread/Util: rename ioprio_set() to linux_ioprio_set()  
						
						... 
						
						
						
						Juse in cas glibc gets a wrapper for the system call which would then
conflict with ours. 
						
						
					 
					
						2018-02-09 18:43:45 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						5147654f6c 
					 
					
						
						
							
							SongFilter: fix "modified-since" filter  
						
						... 
						
						
						
						Error message sent to client was "basic_string::_M_construct null not
valid" due to passing nullptr to the std::string constructor.
Regression caused by commit 386688b87a 
						
						
					 
					
						2018-02-09 13:19:26 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						250b6a3d52 
					 
					
						
						
							
							Merge tag 'v0.20.16'  
						
						... 
						
						
						
						release v0.20.16 
						
						
					 
					
						2018-02-03 19:59:29 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						12fd1cad0c 
					 
					
						
						
							
							archive/iso9660: libcdio 2.0 compatibility  
						
						... 
						
						
						
						Closes  #173  
					
						2018-02-03 19:32:31 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						73ddbcc876 
					 
					
						
						
							
							player/Thread: wake up the main thread after failed seek  
						
						... 
						
						
						
						Fixes deadlock bug.  Closes  #210  
						
						
					 
					
						2018-02-03 19:28:39 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						e573cbf032 
					 
					
						
						
							
							db/update/Queue: work around GCC7 -Wuninitialized  
						
						
						
						
					 
					
						2018-02-01 19:53:42 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						dead461542 
					 
					
						
						
							
							lib/upnp/Init: enable IPv6  
						
						
						
						
					 
					
						2018-01-31 18:15:46 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						3d5da1ac73 
					 
					
						
						
							
							lib/upnp/Init: use nullptr instead of 0  
						
						
						
						
					 
					
						2018-01-31 18:14:26 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						ec408ca6a6 
					 
					
						
						
							
							output/pulse: fix crash during auto-detection  
						
						... 
						
						
						
						The PulseOutput needs to be "enabled" before WaitConnection() may be
called.
Closes  #207  
						
						
					 
					
						2018-01-30 10:06:36 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						ce2b6dc84d 
					 
					
						
						
							
							RemoteTagCache: new glue class for integrating RemoteTagScanner  
						
						... 
						
						
						
						This commit also puts an instance of RemoteTagScanner into the
Instance class, and hooks it into the "add" and "addid" commands. 
						
						
					 
					
						2018-01-30 00:05:57 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						7d16d8c887 
					 
					
						
						
							
							Listen: move ClientListener pointer to struct Partition  
						
						
						
						
					 
					
						2018-01-29 23:53:52 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						1df5c5a76e 
					 
					
						
						
							
							Listen: move class ClientListener to src/client/Listener.hxx  
						
						
						
						
					 
					
						2018-01-29 23:48:16 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						52da387a1d 
					 
					
						
						
							
							Main: move part of the shutdown code to Instance methods  
						
						
						
						
					 
					
						2018-01-29 23:45:48 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						c1221c5c87 
					 
					
						
						
							
							Main: cancel the update on shutdown even if inotify is unavailable  
						
						... 
						
						
						
						Fixup for commit 681e012fb5 
						
						
					 
					
						2018-01-29 23:37:56 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						befd669075 
					 
					
						
						
							
							Instance: rename Shutdown() to Break()  
						
						
						
						
					 
					
						2018-01-29 23:31:41 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						b6013a92e0 
					 
					
						
						
							
							lib/curl/Request: merge two "try" blocks  
						
						
						
						
					 
					
						2018-01-29 23:25:03 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						19af364400 
					 
					
						
						
							
							event/Thread: add "noexcept"  
						
						
						
						
					 
					
						2018-01-29 23:11:15 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						3fd9a86f3c 
					 
					
						
						
							
							event/Call: invoke function directly if the EventLoop is dead  
						
						... 
						
						
						
						Works around a deadlock bug which happens when waiting for an
EventLoop which isn't running anymore. 
						
						
					 
					
						2018-01-29 23:06:43 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						ce68701c0c 
					 
					
						
						
							
							event/Loop: add flag "dead"  
						
						
						
						
					 
					
						2018-01-29 22:52:13 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						6ea2cb3644 
					 
					
						
						
							
							event/Thread: remove unused method StopAsync()  
						
						
						
						
					 
					
						2018-01-29 22:50:21 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						199c8aaa25 
					 
					
						
						
							
							event/Loop: move code to HandleTimers()  
						
						
						
						
					 
					
						2018-01-29 22:40:12 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						9ce6828d72 
					 
					
						
						
							
							filter/convert: call PcmConvert::Flush() only if initialized  
						
						... 
						
						
						
						Fixes another part of #208 , the one which caused the bogus exception. 
						
						
					 
					
						2018-01-29 22:35:28 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						7ff5cf8372 
					 
					
						
						
							
							filter/convert: add method IsActive()  
						
						
						
						
					 
					
						2018-01-29 22:33:54 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						eb771eaf0d 
					 
					
						
						
							
							output/Thread: re-lock the mutex after flush error  
						
						... 
						
						
						
						Fixes deadlock due to mutex double lock. 
						
						
					 
					
						2018-01-29 22:30:56 +01:00 
						 
				 
			
				
					
						
							
							
								Max Kellermann 
							
						 
					 
					
						
						
							
						
						6908555ed3 
					 
					
						
						
							
							filter/Observer: drop bogus "noexcept"  
						
						... 
						
						
						
						Closes  #208 . 
					
						2018-01-29 22:14:27 +01:00