Max Kellermann
aa08f9692c
pcm/SoxrResampler: add constant SOXR_DEFAULT_QUALITY
2015-01-21 19:56:36 +01:00
Max Kellermann
288ba84939
pcm/SoxrResampler: fix indent
2015-01-21 19:47:14 +01:00
Max Kellermann
4c74016b1a
MixerAll: restore "null" mixer volume from state file
2015-01-16 19:48:26 +01:00
Joshua Wise
1d8544ef3b
db/plugins/ProxyDatabasePlugin: add "keepalive" parameter
2015-01-15 14:44:55 -08:00
Max Kellermann
91a12f76cd
util/CharUtil: minor API documentation fix
2015-01-15 19:34:02 +01:00
Max Kellermann
e8debd2e45
output/recorder: dynamic file name
2015-01-14 22:03:26 +01:00
Max Kellermann
bf59635280
output/recorder: move code to encoder/ToOutputStream.cxx
2015-01-14 20:11:00 +01:00
Max Kellermann
eaf0662b75
fs/io/FileOutputStream: add static method Create()
2015-01-14 19:44:28 +01:00
Max Kellermann
b043b2a761
fs/AllocatedPath: add operator==
2015-01-13 10:42:29 +01:00
Max Kellermann
ac7e0dfb77
DetachedSong: remove obsolete friend declaration
2015-01-12 20:56:07 +01:00
Max Kellermann
05d47bb09a
output/null: convert struct to class
2015-01-09 19:30:22 +01:00
Max Kellermann
575a5bd0b8
output/null: move functions into the struct
2015-01-09 17:44:00 +01:00
Max Kellermann
ae4c189e19
encoder/Interface: move functions into the struct
2015-01-08 19:36:19 +01:00
Max Kellermann
362a6e6d46
encoder/Plugin: move struct Encoder to EncoderInterface.hxx
2015-01-08 19:31:57 +01:00
Max Kellermann
c76c7c68ff
output/recorder: convert struct to class
2015-01-08 16:56:22 +01:00
Max Kellermann
59ac9d39d5
output/recorder: move encoder_finish() call to destructor
2015-01-08 16:56:13 +01:00
Max Kellermann
ec41caade4
output/wrapper: add method SendTag()
2015-01-07 19:20:09 +01:00
Max Kellermann
06ec06cdd7
output/recorder: remove unused variable "recorder_output_domain"
2015-01-07 19:17:07 +01:00
Max Kellermann
b7acf86408
output/recorder: use FileOutputStream
2015-01-07 19:14:23 +01:00
Max Kellermann
58c4db925b
output/recorder: log commit errors
2015-01-07 19:13:55 +01:00
Max Kellermann
fe0c4ff3c2
output/recorder: move code to method Commit()
2015-01-07 19:11:04 +01:00
Max Kellermann
7a2af0fbf4
output/recorder: move more functions into the struct
2015-01-07 18:55:34 +01:00
Max Kellermann
d83127722f
output/oss: use nullptr instead of NULL
2015-01-07 18:55:34 +01:00
Max Kellermann
dc03ad05be
output/oss: add "const" attributes
2015-01-07 18:50:38 +01:00
Max Kellermann
a62df3cb8f
output/oss: eliminate unnecessary tail code after "switch"
2015-01-07 18:49:29 +01:00
Max Kellermann
18e32abda9
output/oss: convert struct to class
2015-01-07 18:43:52 +01:00
Max Kellermann
15d29da43b
output/oss: add "device" parameter to constructor
2015-01-07 18:43:45 +01:00
Max Kellermann
8b217d5313
fs/io/FileOutputStream: use O_TMPFILE if available
...
The Linux feature allows writing new files to an invisible file, and
then replace the old file. This preserves the old file if we get
interrupted by some event.
2015-01-06 19:38:55 +01:00
Max Kellermann
c150fd9a1c
output/oss: move functions into the struct
2015-01-06 16:24:33 +01:00
Max Kellermann
674d14879f
Merge branch 'v0.19.x'
2015-01-06 12:54:46 +01:00
Max Kellermann
37e9010887
input/async: reset the "open" flag after seeking successfully
...
Fixes a problem with the "curl" input plugin: IsEOF() always returns
true because the "open" flag was cleared by
CurlInputStream::RequestDone() when end-of-stream was reached. This
flag stays false even when seeking to another position has succeeded.
This patch resets the "open" flag to true after seeking successfully.
2015-01-06 12:46:28 +01:00
Max Kellermann
4bd2c75056
thread/Name: disable pthread_setname_np() on NetBSD
...
NetBSD's pthread_setname_np() prototype is incompatible with the rest
of the world, and it requires to pass the string argument as a
non-const pointer. Instead of working around this misdesign, I hereby
disable the feature on NetBSD.
2015-01-06 12:08:36 +01:00
Max Kellermann
b9ed850b98
thread/Name: enable FormatThreadName() with prctl()
...
Add macro HAVE_THREAD_NAME which is set when any method to set the
thread name is available. Use that macro in FormatThreadName()
instead of just checking for HAVE_PTHREAD_SETNAME_NP.
2015-01-06 12:04:30 +01:00
Max Kellermann
11cea17496
thread/Name: indent preprocessor commands
2015-01-06 12:04:15 +01:00
Max Kellermann
81df45a893
fs/io/File{Reader,OutputStream}: use OpenFile()
2015-01-05 23:13:35 +01:00
Max Kellermann
c1f0708a5d
output/recorder: use config_param::GetBlockPath()
...
Supports "~/" expansion. Forces us to switch from "const char *" to
AllocatedPath, which is a good thing.
2015-01-05 19:49:54 +01:00
Max Kellermann
153f5854e2
output/alsa: move functions into the struct
2015-01-04 19:53:56 +01:00
Max Kellermann
f532964fde
output/pulse: add wrapper for pa_threaded_mainloop_signal()
2015-01-04 19:51:09 +01:00
Max Kellermann
efea609dc3
output/pulse: convert to class
2015-01-04 19:46:51 +01:00
Max Kellermann
f3a160038d
output/pulse: move more code into the struct
2015-01-04 19:45:58 +01:00
Max Kellermann
f016eef48a
output/pulse: use AudioOutputWrapper::Init()
2015-01-04 19:44:45 +01:00
Max Kellermann
f649514183
output/openal: convert macro to constexpr
2015-01-03 20:00:41 +01:00
Max Kellermann
afd31677dd
output/openal: convert struct to class
2015-01-03 20:00:16 +01:00
Max Kellermann
b28710b08c
output/openal: move functions into the class
2015-01-02 18:40:16 +01:00
Max Kellermann
712ed555e6
Copyright year 2015
2015-01-01 19:48:13 +01:00
Max Kellermann
11fb5bc3d0
output/osx: use nullptr instead of NULL
2014-12-31 11:47:27 +01:00
Max Kellermann
2a5feb225b
ConfigData: use nullptr instead of NULL
2014-12-30 23:26:54 +01:00
Max Kellermann
970e338847
output/pulse: move code into the struct
2014-12-30 00:03:07 +01:00
Max Kellermann
0b9f650fe2
output/Wrapper: new helper class
2014-12-29 23:45:14 +01:00
Max Kellermann
977834179a
output/pulse: move initialization to constructor
2014-12-29 23:07:18 +01:00
Max Kellermann
b42732743d
output/pulse: remove unnecessary initialization
2014-12-29 23:00:11 +01:00
Max Kellermann
99e6409a67
{mixer,output}/pulse: move code to LogPulseError()
2014-12-29 22:42:52 +01:00
Max Kellermann
6a0a5f9693
output/pulse: move SetError() to lib/pulse/Error.cxx
2014-12-29 22:34:32 +01:00
Max Kellermann
fe9db8b369
{mixer,output}/pulse: use a common Domain instance
2014-12-29 22:25:14 +01:00
Max Kellermann
ca035d0e8d
mixer/pulse: remove redundant "virtual" keywords
2014-12-29 22:23:58 +01:00
Max Kellermann
84c9260dc4
output/fifo: make variables more local
2014-12-28 00:48:05 +01:00
Max Kellermann
987c02e946
output/pipe: convert to class
2014-12-27 18:57:18 +01:00
Max Kellermann
5c0bc612fe
output/pipe: add static method Create()
2014-12-27 18:56:23 +01:00
Max Kellermann
0e28b53242
output/pipe: merge Initialize() and Configure()
2014-12-27 18:56:08 +01:00
Max Kellermann
5fc0ce80fc
output/pipe: move functions into the struct
2014-12-27 18:42:31 +01:00
Max Kellermann
af9092df39
EncoderPlugin: pass Tag reference to method tag()
2014-12-26 22:30:54 +01:00
Max Kellermann
58a5da33c2
OutputPlugin: pass Tag reference to _send_tag()
2014-12-26 22:27:01 +01:00
Max Kellermann
b3435ae432
output/recorder: implement send_tag()
2014-12-26 15:03:22 +01:00
Max Kellermann
a31129333c
output/recorder: move functions into the struct
2014-12-26 14:57:29 +01:00
Max Kellermann
2983c2a24f
output/jack: fix implicit nullptr/bool conversion
...
Return false on error, not nullptr.
2014-12-26 14:44:47 +01:00
Max Kellermann
412bedb697
Merge branch 'v0.19.x'
2014-12-26 14:40:32 +01:00
Max Kellermann
163597ef69
db/simple: fix implicit nullptr/bool conversion
...
Return false on error, not nullptr.
2014-12-26 14:34:03 +01:00
Max Kellermann
95f84afd33
fs/Traits, ...: work around -Wtautological-pointer-compare
...
New in clang 3.6.
2014-12-26 14:34:03 +01:00
Max Kellermann
9f7fd1fbfb
db/lazy, input/mms: add "override" keywords
...
Fixes -Winconsistent-missing-override (clang 3.6).
2014-12-26 14:29:29 +01:00
Max Kellermann
940cab8620
Merge branch 'v0.18.x' into v0.19.x
2014-12-26 14:28:52 +01:00
Max Kellermann
d37811f177
lib/ffmpeg/Buffer: always include libavutil/mem.h
...
Needed for av_free().
2014-12-26 14:09:45 +01:00
Max Kellermann
665031467a
db/proxy, output/shout: fix implicit nullptr/bool conversion
...
Return false on error, not nullptr.
2014-12-26 13:50:54 +01:00
Max Kellermann
df33171107
db/{simple,proxy}, ...: add "override" keywords
...
Fixes -Winconsistent-missing-override (clang 3.6).
2014-12-26 13:47:04 +01:00
Max Kellermann
53f4044890
util/{ASCII,UriUtil}, ...: work around -Wtautological-pointer-compare
...
New in clang 3.6.
2014-12-26 13:43:32 +01:00
Max Kellermann
a5049136ff
DatabaseGlue: convert nullptr check to assertion
2014-12-26 13:43:32 +01:00
Max Kellermann
705b3c6b63
util/ASCII: fix indent
2014-12-26 13:37:38 +01:00
Max Kellermann
6b4ac66962
Compiler.h: add macro CLANG_CHECK_VERSION()
2014-12-26 13:31:03 +01:00
Max Kellermann
0964b06240
Compiler.h: add macro GCC_OLDER_THAN()
2014-12-26 13:30:44 +01:00
Max Kellermann
92eeca3ba7
util/Manual: reimplement GCC_CHECK_VERSION() using GCC_MAKE_VERSION()
2014-12-26 13:30:22 +01:00
Max Kellermann
2a86554ac4
Compiler.h: add macro GCC_MAKE_VERSION()
2014-12-26 13:30:11 +01:00
Max Kellermann
d4ca853fd3
output/jack: move code to separate functions
2014-12-25 22:18:22 +01:00
Max Kellermann
5a8d2e8057
output/jack: cache AudioFormat::channels
2014-12-24 23:22:56 +01:00
Max Kellermann
687fc358fd
output/jack: fix typo
2014-12-24 23:22:56 +01:00
Max Kellermann
c4c2da06b7
output/jack: use jack_ringbuffer_get_write_vector()
...
Reduce number of libjack calls.
2014-12-24 23:14:15 +01:00
Max Kellermann
8928cd53bf
output/jack: move jack_ringbuffer_write_space() call to WriteSamples()
2014-12-24 23:08:39 +01:00
Max Kellermann
ca88fc4ed3
output/jack: cache AudioFormat::channels
2014-12-24 23:04:29 +01:00
Max Kellermann
b83a1d79b7
output/jack: pass float* to WriteSamples()
2014-12-24 23:02:19 +01:00
Max Kellermann
cec2a837cf
output/jack: WriteSamples() returns size_t
2014-12-24 23:00:46 +01:00
Max Kellermann
cff47262da
output/jack: pass size_t to WriteSamples()
2014-12-24 23:00:15 +01:00
Max Kellermann
da83eae754
output/jack: use SampleFormat::FLOAT
...
What JACK expects is already implemented in MPD, just not used. The
sample format conversion code in the JACK plugin was redundant and
could reduce sound quality.
2014-12-24 22:40:00 +01:00
Max Kellermann
c5409d52f5
output/Internal: move enum AudioOutputCommand into the struct
2014-12-24 22:18:47 +01:00
Max Kellermann
54fc8f0e8c
output/Internal: convert audio_output_command to strictly-typed enum
2014-12-24 22:13:50 +01:00
Max Kellermann
2ea633a2f7
output/jack: use std::fill()
2014-12-24 16:27:13 +01:00
Max Kellermann
9a52043fad
output/jack: move functions into the struct
2014-12-24 16:10:27 +01:00
Max Kellermann
39a5be2df9
output/jack: merge two mpd_jack_available() calls
2014-12-24 16:10:27 +01:00
Max Kellermann
96560e317a
output/jack: make variables more local
2014-12-24 15:21:23 +01:00
Max Kellermann
adb27903eb
output/jack: convert const to constexpr
2014-12-24 15:14:51 +01:00
Max Kellermann
51150faa39
output/jack: convert enum to constexpr
2014-12-24 09:52:32 +01:00
Max Kellermann
a56949e9fa
decoder/ffmpeg: support interleaved floating point
2014-12-23 20:51:08 +01:00
Max Kellermann
ea96919b80
Merge branch 'v0.19.x'
2014-12-23 20:43:15 +01:00
Max Kellermann
43da4c0eca
input/mms: limit the mmsx_read() size
2014-12-23 20:34:45 +01:00
Max Kellermann
5835afb849
decoder/ffmpeg: fix indent
2014-12-23 10:21:34 +01:00
Max Kellermann
b9c7771830
decoder/DsdLib: add missing stdlib.h include
2014-12-23 10:08:46 +01:00
Jan Brittenson
35db88affe
DSF ID3 tags hitting 4k size limit
...
Here's a change to dynamically allocate the DSD ID3 tag buffer.
Pretty much anything with cover art is going to exceed the existing,
static 4k limit... Here's a change to dynamically allocate the buffer
and sanity check it at some upper limit. I rather arbitrarily pulled
256k out of thin air just to keep a corrupt file from causing it to
trying to allocate a buffer larger than available memory.
2014-12-23 09:49:33 +01:00
Max Kellermann
7f3fecbdf5
decoder/ffmpeg: simplify mpd_ffmpeg_open_input()
2014-12-22 22:24:10 +01:00
Max Kellermann
a2c6d5e148
decoder/ffmpeg: move functions into the AvioStream struct
2014-12-22 21:58:25 +01:00
Max Kellermann
7afe63aa06
configure.ac: use MPD_ENABLE_AUTO_PKG_LIB for libgme
2014-12-22 10:28:15 +01:00
Max Kellermann
8fab855099
configure.ac: remove redundant declaration "HAVE_ISO9660"
2014-12-22 10:19:13 +01:00
Max Kellermann
fefe2df3ee
input/ffmpeg: use FfmpegInit() instead of av_register_all()
...
Make sure that the log callback is installed.
2014-12-21 20:56:42 +01:00
Max Kellermann
90b91ead72
decoder/ffmpeg: move code to lib/ffmpeg/Init.cxx
2014-12-21 20:51:41 +01:00
Max Kellermann
1e98e41381
decoder/ffmpeg: move code to lib/ffmpeg/LogCallback.cxx
2014-12-20 18:46:29 +01:00
Max Kellermann
7030e8f050
decoder/ffmpeg: remove obsolete comment
2014-12-19 11:53:58 +01:00
Max Kellermann
74bb514a8c
decoder/ffmpeg: convert enums to constexpr
2014-12-19 11:53:58 +01:00
Max Kellermann
46914e486c
decoder/ffmpeg: move struct AvioStream to FfmpegIo.hxx
2014-12-19 10:35:10 +01:00
Max Kellermann
f9abc561fb
decoder/ffmpeg: remove unnecessary nullptr check for av_free()
2014-12-19 10:33:17 +01:00
Max Kellermann
2e22ff2e36
decoder/ffmpeg: use AVStream::duration
...
Use the duration of the stream we're actually decoding - not the
"global" attribute AVFormatContext::duration which may differ.
2014-12-19 10:23:05 +01:00
Max Kellermann
8c3be4a5f0
decoder/ffmpeg: skip _scan_stream() if no audio stream was found
2014-12-19 10:21:51 +01:00
Max Kellermann
3fe2f7337c
decoder/ffmpeg: remove redundant audio stream check
2014-12-19 10:20:45 +01:00
Max Kellermann
ec24eb1d8e
decoder/ffmpeg: use more references
2014-12-19 10:19:19 +01:00
Max Kellermann
ffcaf85609
decoder/ffmpeg: merge avformat_close_input() calls
2014-12-19 09:57:29 +01:00
Max Kellermann
d0c481e44e
lib/ffmpeg/Time: add API documentation
2014-12-19 09:49:29 +01:00
Max Kellermann
67e2d9f9e1
decoder/ffmpeg: move code to lib/ffmpeg/Time.hxx
2014-12-19 09:41:21 +01:00
Max Kellermann
dd5aa2b483
decoder/ffmpeg: use av_free() instead of av_freep()
2014-12-19 09:23:22 +01:00
Max Kellermann
806494a254
decoder/ffmpeg: add API documentation
2014-12-19 06:41:50 +01:00
Max Kellermann
5c3afd020a
decoder/ffmpeg: copy_interleave_frame() returns ConstBuffer
2014-12-18 23:44:56 +01:00
Max Kellermann
190cdfc326
decoder/ffmpeg: copy_interleave_frame() returns Error
2014-12-18 23:39:56 +01:00
Max Kellermann
13b954c765
decoder/ffmpeg: pass AVPacket copy to ffmpeg_send_packet()
2014-12-18 23:24:11 +01:00
Max Kellermann
49f6b50ed3
decoder/ffmpeg: simplify ffmpeg_send_packet()
2014-12-18 23:21:48 +01:00
Max Kellermann
0f2a304d34
decoder/ffmpeg: pass references instead of pointers
2014-12-18 23:08:08 +01:00
Max Kellermann
a142f93dca
decoder/ffmpeg: move code to class FfmpegBuffer
2014-12-18 22:24:28 +01:00
Max Kellermann
2dfe2fb22c
decoder/ffmpeg: fix crash on out-of-memory
...
Fixes regression by commit 7c8038e
2014-12-18 22:24:02 +01:00
Max Kellermann
e8564b4c90
decoder/ffmpeg: log detailed error message
2014-12-18 22:07:38 +01:00
Max Kellermann
2fd81b4932
decoder/ffmpeg: remove obsolete comment
2014-12-18 20:19:40 +01:00
Max Kellermann
0cf4c6ffea
decoder/ffmpeg: add "pure" attributes
2014-12-18 20:17:15 +01:00
Max Kellermann
25f89afbfb
output/winmm: show detailed error messages
2014-12-17 19:43:14 +01:00
Max Kellermann
8400da9934
release v0.19.7
...
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
iQIcBAABAgAGBQJUkcmtAAoJECNuiljG20USLuwP/3MjssxpUkq6aN1beyNACWJ8
Zgr/ibDjxYJY+UAHUOycnJQ8WNpgfXNSR4F5jQHznJdpemJCZCeBd2s5yelEdu0C
SBjJ9FiKPeu8or5N34CPmRQDmDGHv0II4/ySmzlBhH4XRV5JF5li/j4KtAlOCqCT
GNnlmgn05o+oX4Olpg/id6H7wvny+YDY3p33sJmi+djBnSbJyJNvk9NhAr9n4I7Q
FfGHbTzRLSZKHa47zzXag30PBj2X8x7NOAcAX7/evQpw9Gud/8CwXKk21kp6L/fv
RJnj4lLtkj8MRc+8vskZ9EXgYr3yC/cldP8Fw8qsY/t7d8UFUN8qFqpq9O8IPnga
D4hNpq7VF9ZxMhQtxBiT3cRvjTXBp8J/B7p2YDuYHBhIZh8IPzjDCyF4CzlN/470
3zTqq/aar93AeI/6MQlpQPBK1DGvrrHBVP3Mj7cCTbx61P7/1xEIxYntRIfJw449
JRJDJKjdyOY4+Sqm3Agu3WiQlyOzZXmqM3E3FFeul4mUvcOKhfbZxjayYsGlfigA
MHge1wif2aOe6IU334DUD5V0m61MMoefznEvWUdAZHtdvQox0ovDmwwFRizX2fGc
rlUhoUOXWjjGbTI2VjXsBklzh8P+MxQ8OiJGw+V4DBI0XL+A2tpqISs9mpCVPwQ0
T37uc6kdDB99noMuD2cw
=+4Cz
-----END PGP SIGNATURE-----
Merge tag 'v0.19.7'
2014-12-17 19:27:59 +01:00
Max Kellermann
9c56c49e73
release v0.18.21
...
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
iQIcBAABAgAGBQJUkcgMAAoJECNuiljG20UShwAP/3qGPv1feFJMOQbhHF+K8eL9
4oeKJAblVR98+jsdu8Z7GidGGXrvIX8pxGWJPLLYSa2naR9/gtTxpiYZPEd2ex4G
1jbFzI0GmU08I5x9sUPstX4GoDVfWnV3ICYzY7z1VVhlxYXlI+dHOPz61FxaLWYM
i/H4WR7lvSwyOsYaFtfqZC9SD71XQ0V56yDqaDK6a/NbMg0WQQMghmH0swkEk/FK
wN6nxEpFpTtOjBLjF51TyNC5JT1lxXDYwxYmrtd6rxkNqhN8duCRXq9IK7MEGync
LNtHKGMrcXwLBSAPM6GTrY0StCch6fEBhOg0Tr7JQ81BSb/1XKzimbxCCULDwx/P
/hN4lGr66tudXHFaRQX0GLxRpkpKtanp7+xtZ5AhGh4Wk7YQ62nb8RN3qCc5x2Oi
cvnK6bewMi7rZoIejAhaXtbKNPho/H5TpE404C+ScnWyEAVtly45xgECNdzllhfk
k4Kp4rW2CNmHTNbZRFh1Qre2g47a9rhZxoxXx4X0fi6YSruekQC3qjdloom5VN2I
8d7NloQoJ+wjkYXuZ3EoxdBhbdViZBMg8CP99KFc7sYQTGmYtrKyjZ5EiOAVw3p5
rHoTrGdZr8aKPMcKQPo4GaTkB9njE4a4l+uVq5SOiRSfpDeRqvhIqOrUz4EOf8Ic
ryT0jwFGfKhSHG4tz+9K
=WjqC
-----END PGP SIGNATURE-----
Merge tag 'v0.18.21' into v0.19.x
2014-12-17 19:19:13 +01:00
Max Kellermann
c5720a15c7
LogBackend: force-flush stderr on WIN32
...
setvbuf() does not seem to have an effect on Windows.
2014-12-17 19:12:25 +01:00
Max Kellermann
90709b332a
LogInit: make stderr line-buffered
...
Make sure everything gets logged right away. No delays because
stdio's buffer is not yet full.
2014-12-17 19:12:01 +01:00
Max Kellermann
81f17d10c8
util/HugeAllocator: enable MEM_COMMIT on Windows
...
Without MEM_COMMIT, the reserved address space is not accessible, and
MPD crashes.
2014-12-17 19:10:58 +01:00
k44
773de38bd9
playlist/embcue: fix filename suffix detection
...
The definition of the playlist_plugin struct member of the embcue
plugin was incorrect.
2014-12-16 18:43:05 +01:00
Max Kellermann
adfc5db3d2
Merge branch 'v0.19.x'
2014-12-15 00:46:56 +01:00
Max Kellermann
a48704925d
storage/nfs: add timeout
2014-12-15 00:45:13 +01:00
Max Kellermann
fa4beeee75
decoder/ffmpeg: detect and fix negative time stamps
...
Works around assertion failure due to something that appears to be a
(minor) FFmpeg bug.
2014-12-15 00:40:46 +01:00
Max Kellermann
68d1abdb85
storage/nfs: clear last_error in SetState()
...
Fixes bogus assertion failure.
2014-12-15 00:39:30 +01:00
Max Kellermann
7e8474a85a
lib/nfs/Connection: unregister socket with SocketMonitor::Steal()
...
SocketMonitor::Cancel() does not actually unregister the socket; it
only disables the event.
2014-12-15 00:31:12 +01:00
Max Kellermann
82da364b8b
lib/nfs/Connection: implement mount timeout
2014-12-15 00:05:53 +01:00
Max Kellermann
7fa91ec175
lib/nfs/Connection: add debug flag "in_destroy"
2014-12-15 00:03:30 +01:00
Max Kellermann
1d3a09d377
lib/nfs/Connection: add assertion
2014-12-14 22:51:37 +01:00
Max Kellermann
02563a35f0
lib/nfs/Connection: fix reconnect after mount failure
...
When mounting had not yet finished, SocketMonitor::IsDefined() was
always false, due to the workaround at the beginning of the function
that calls SocketMonitor::Steal(). This commit drops the IsDefined()
check because it was never necessary and breaks reconnect.
2014-12-14 22:49:16 +01:00
Max Kellermann
d653f35bb7
lib/nfs/Connection: fix typo in code comment
2014-12-14 22:49:09 +01:00
Max Kellermann
a543627abd
lib/nfs/Connection: fix memory leak (and assertion failure)
...
nfs_destroy_context() will invoke all pending callbacks with
err==-EINTR. In CancellableCallback::Callback(), this will invoke
NfsConnection::DeferClose(), which however is only designed to be
called from nfs_service(). In non-debug mode, this will leak memory
because nfs_close_async() is never called.
Workaround: before nfs_destroy_context(), invoke nfs_close_async() on
all pending file handles.
2014-12-14 16:02:47 +01:00
Max Kellermann
80f2ba7fca
lib/nfs/Connection: move code to Service()
2014-12-14 15:45:10 +01:00
Max Kellermann
32bca64920
lib/nfs/Connection: add assertions
2014-12-14 15:40:29 +01:00
Max Kellermann
7fa1a84ec3
lib/nfs/Connection: move code to method InternalClose()
2014-12-14 15:38:09 +01:00
Max Kellermann
ab4bb26a0a
lib/nfs/Connection: make in_service and in_event debug-only flags
2014-12-14 15:20:40 +01:00
Max Kellermann
4b8d258cff
lib/nfs/Connection: fix crash while canceling a failing Open()
...
The method NfsConnection::CancellableCallback::Callback() will always
invoke NfsConnection::Close() on the file handle, even if the void
pointer is not a nfsfh. This can happen if the Open() was not
successful, e.g. when the file does not exist.
2014-12-14 15:16:01 +01:00
Max Kellermann
3c29aa6271
event/Loop: read the "again" flag while holding mutex
2014-12-14 14:47:36 +01:00
Max Kellermann
51464b4317
lib/nfs/Connection: add assertions
2014-12-14 14:24:49 +01:00
Max Kellermann
3f32a6b607
input/nfs: include cleanup
2014-12-14 14:21:11 +01:00
Max Kellermann
21aa1631a4
input/async: add API documentation
2014-12-14 14:21:11 +01:00
Max Kellermann
49968541fd
sticker/Match: add inequality operators
2014-12-12 22:26:04 +01:00
Max Kellermann
cc143105b8
sticker/Match: add operator "EQUALS"
...
Mapped to "=" in the MPD protocol. This is the first operator,
initially supporting value matches in the MPD protocol.
2014-12-12 22:16:00 +01:00
Max Kellermann
fed44e95b3
sticker/Song: add enum StickerOperator to sticker_song_find()
2014-12-12 22:10:24 +01:00
Max Kellermann
71ece56470
sticker/Database: move code to BindFind()
2014-12-12 22:04:43 +01:00
Max Kellermann
204a1de3fd
sticker/Database: use the Error library
2014-12-12 21:43:54 +01:00
Max Kellermann
80ddf4aecf
sticker/Database: always invoke sqlite3_reset() and sqlite3_clear_bindings()
2014-12-12 21:43:54 +01:00
Max Kellermann
12b4a666bc
lib/sqlite/Util: add ExecuteModified()
2014-12-12 21:43:54 +01:00
Max Kellermann
cfdbaf331e
sticker/Database: add wrapper for sqlite3_step()
2014-12-12 21:43:54 +01:00
Max Kellermann
052d350b19
sticker/Database: move SQLite helpers to lib/sqlite/Util.hxx
2014-12-12 21:42:51 +01:00
Max Kellermann
2ca18a7ee5
lib/sqlite/Domain: add Domain instance for SQLite
...
Replaces the sticker_domain for Error::domain.
2014-12-12 20:49:00 +01:00
Max Kellermann
7dbe5f4640
sticker/Database: remove redundant sqlite3_reset() calls
...
Call sqlite3_reset() only after a sqlite3_stmt* has been used, not
before. Assume it is already in reusable state.
2014-12-12 20:43:26 +01:00
Max Kellermann
432ecd1b6a
sticker/Database: require SQLite 3.7.3
...
SQLite 3.7.3 is the version shipped in Debian Squeeze (oldstable);
should be old enough to be the required version. Drop the
compatibility #ifdef.
2014-12-12 20:41:36 +01:00
Rasmus Steinke
7d9aa5b716
vorbiscomments: Remove support for non-standard "album artist" tags.
...
MPD used both "album artist" and "albumartist" tags and mapped them to one tag.
This could lead to issues, if a file had both tags, causing MPD to send
a list of albumartists instead of a single one.
Since "album artist" is not a standard tag anyway and even its originators
started to use the proper alternative, its time to say goodbye!
2014-12-12 18:28:11 +01:00
Max Kellermann
43267dc892
sticker/Database: make variables more local
2014-12-12 14:27:47 +01:00
Max Kellermann
3ec6c26e6c
sticker/Database: add sqlite3_bind_text() wrapper
2014-12-12 14:13:35 +01:00
Max Kellermann
7de684668b
sticker/Database: remove C-style (void)
2014-12-12 14:12:31 +01:00
Max Kellermann
2fec463542
util/HugeAllocator: disable MEM_LARGE_PAGES on Windows
...
MEM_LARGE_PAGES does not appear to work. Instead, MEM_RESERVE appears
to be necessary. Until I figure this out, this large pages are
disabled.
2014-12-12 13:20:58 +01:00
Max Kellermann
1affc641c4
input/Init: eliminate double colon from log message
2014-12-12 13:20:37 +01:00
Max Kellermann
4741d7bfe2
Merge branch 'v0.19.x'
2014-12-12 13:14:29 +01:00
Max Kellermann
aea99a1222
decoder/ffpmeg: make variables more local
2014-12-11 10:58:33 +01:00
Max Kellermann
7c8038e2da
decoder/ffpmeg: simplify ffmpeg_send_packet()
2014-12-11 10:58:06 +01:00
Max Kellermann
673336297d
decoder/ffmpeg: support stream tags
2014-12-11 10:52:40 +01:00
Max Kellermann
ee4b7042ce
decoder/ffpmeg: move code to FfmpegScanMetadata()
2014-12-11 10:08:08 +01:00
Max Kellermann
fc1796f3e8
decoder/ffmpeg: support ReplayGain and MixRamp
2014-12-10 13:45:29 +01:00
Max Kellermann
d8926ea5eb
decoder/ffpmeg: use forward declarations
2014-12-10 13:42:34 +01:00
Max Kellermann
0c1e428c7d
decoder/ffpmeg: rename functions to CamelCase
2014-12-10 13:05:28 +01:00
Max Kellermann
bcd97f5887
decoder/ffmpeg: optimize ffmpeg_scan_dictionary()
...
Don't scan tag items if the handler doesn't implement the tag()
method.
2014-12-10 09:35:28 +01:00
Max Kellermann
0faf86c2b9
ReplayGainInfo: add method IsDefined()
2014-12-10 07:57:46 +01:00
Max Kellermann
b30957c89c
ReplayGainInfo: make IsDefined() constexpr
2014-12-10 07:57:07 +01:00
Max Kellermann
dbbcbc3616
Util/Manual: cast via void* to avoid alignment warnings
2014-12-09 23:10:05 +01:00
Max Kellermann
1889150013
Util/Manual: use Get() in Destruct()
2014-12-09 23:08:53 +01:00
Max Kellermann
14f9cdde6b
Util/Manual: add assertion to Get()
2014-12-09 23:08:22 +01:00
Max Kellermann
3ab0691eec
Util/Manual: add method Get()
...
May be more clear than operators.
2014-12-09 23:07:43 +01:00
Max Kellermann
1e073a196f
util/Manual: use gcc_alignas()
2014-12-09 23:05:47 +01:00
Max Kellermann
7b60e3916c
DespotifyUtils: make string buffers temporary
2014-12-09 22:14:47 +01:00
Max Kellermann
c486c5bf5b
DespotifyUtils: fix coding style
2014-12-09 22:10:17 +01:00
Max Kellermann
fc0b6d143a
DespotifyUtils: use ARRAY_SIZE()
2014-12-09 22:06:22 +01:00
Max Kellermann
5f4252bcd2
ConfigTemplates: use ARRAY_SIZE()
2014-12-09 22:04:34 +01:00
Max Kellermann
a588aef921
output/oss: make the static arrays "constexpr"
2014-12-09 22:02:18 +01:00