Max Kellermann
c26703b7e6
SongFilter: check value.empty() after checking tag fallbacks
...
In this new order, a filter 'AlbumArtist ""' matches only on songs
which neither have `AlbumArtist` nor `Artist`.
2018-10-22 18:34:47 +02:00
Max Kellermann
db27bb76e2
db: fix broken command "list ... group"
...
Grouping in the "list" command was completely broken from the start,
unlike "count group". I have no idea what I have been thinking when I
wrote commit ae178c77bd
, but it didn't
make any sense.
This commit is a rewrite of the feature.
For clients to be able to detect this feature, this commit also
increments the protocol version.
2018-10-22 13:08:24 +02:00
Max Kellermann
7cfe929c36
db/Count: print empty group if song without grouped tag exists
...
Be consistent with "list" responses.
2018-10-22 12:42:18 +02:00
Max Kellermann
6c06244e83
db/Count: move code to tag/VisitCallback.hxx
2018-10-22 11:50:51 +02:00
Max Kellermann
53448e4633
tag/Fallback: add tag fallbacks for AlbumArtistSort, ArtistSort
...
Just like AlbumArtist falls back to Artist, AlbumArtistSort should
fall back tom AlbumArtist, ArtistSort and finally Artist.
Closes #355
2018-10-22 10:52:42 +02:00
Max Kellermann
21adc78713
SongFilter: use ApplyTagFallback()
2018-10-22 10:46:26 +02:00
Max Kellermann
0340b01392
db/Count: use ApplyTagFallback()
2018-10-22 10:46:26 +02:00
Max Kellermann
94aed92e9a
tag/Set: move code to ApplyTagWithFallback()
2018-10-22 10:10:43 +02:00
Max Kellermann
6b9966e969
tag/Set: include cleanup
2018-10-22 10:09:56 +02:00
Max Kellermann
4bc5333995
tag/Set: use TagBuilder::AddItemUnchecked()
...
This improves the workaround from commit
b5ba94f1de
and actually gives a useful
result for "list" with a disabled tag.
2018-10-22 10:06:04 +02:00
Max Kellermann
ff58b8d255
tag/Builder: move code to AddItemUnchecked()
2018-10-22 10:03:47 +02:00
Max Kellermann
3f3f0af543
python/build/libs.py: upgrade CURL to 7.61.1
2018-10-22 08:53:30 +02:00
Max Kellermann
850d208b7b
python/build/libs.py: upgrade Opus to 1.3
2018-10-22 08:44:11 +02:00
Max Kellermann
da563940b4
python/build/libs.py: upgrade libmpdclient to 2.16
2018-10-22 08:32:32 +02:00
Max Kellermann
282859a62a
java/String: include cleanup
2018-08-28 13:07:28 +02:00
Max Kellermann
fbeb5eefdc
java/Class: drop unnecessary namespace spec
2018-08-28 13:01:01 +02:00
Max Kellermann
85bada0505
java/Class: use DiscardException() in FindOptional()
...
Sometimes, the JVM returns a non-nullptr value with an exception
pending (seen on Android 1.6, maybe a Dalvik bug?). Let's catch all
such cases.
2018-08-28 13:00:08 +02:00
Max Kellermann
cf96135125
android/Main: remove SDK_INT diversion
...
MPD has minSdkVersion=21 which is above all the checks here.
2018-08-20 11:25:47 +02:00
Max Kellermann
1ff97783ea
Makefile.am: use $(AM_V_GEN) and $(AM_V_at)
2018-08-20 11:22:56 +02:00
Max Kellermann
2bc42c6445
Makefile.am: use $(MKDIR_P) instead of "mkdir -p"
2018-08-20 11:13:25 +02:00
Max Kellermann
49372a222f
Makefile.am: use $(@D)/$(@F) instead of $(dir/notdir ...)
2018-08-20 11:04:35 +02:00
Thomas Guillem
9127afbf3f
lib/nfs/Connection: use nfs_stat64_async
...
Since nfs_stat_async is deprecated.
2018-08-20 10:51:24 +02:00
Max Kellermann
f2caac595a
configure.ac: specify minimum libnfs version 1.9.5
...
This is the version in Debian Jessie (oldstable), a reasonable "old
enough" version to keep support for.
2018-08-20 10:51:24 +02:00
Thomas Guillem
14d3a7ae83
android: use a gray notification icon
2018-08-20 00:07:35 +02:00
Thomas Guillem
f37ab5482b
android: improve Settings UI and run mpd on boot
...
add 2 preferences to:
- enable Wakelock when MPD is running (prevent suspend)
- run MPD on boot
and display MPD logs
2018-08-20 00:07:18 +02:00
Thomas Guillem
ef38dbe5bf
android: fix AndroidManifest.xml warnings
...
- <uses-permission> must be before <application>
- specify allowBackup (default)
2018-08-20 00:07:18 +02:00
Thomas Guillem
54a5491b86
android: Main is now a service
...
- add Settings: Activity to start / stop MPD Service (Main).
- Main is a service that run in foreground with a notification. See
Service.startForeground documentation for more details.
- Main.Client is used to control the service: start or stop it and also receive
callbacks when service encounters an error, is killed, is started or is
stopped.
- Main.start to start the service without any fallback.
2018-08-19 23:35:49 +02:00
Thomas Guillem
aff070bcbb
android: add LogListener
...
A Java object to send logs on the android side.
2018-08-19 23:32:24 +02:00
Max Kellermann
5af2632d4f
Makefile.am: use javac instead of javah to generate JNI header
...
javah is deprecated.
2018-08-19 23:27:12 +02:00
Max Kellermann
44a31357f4
android/AndroidManifest.xml: increase targetSdkVersion to 26 (required by Google Play)
2018-08-18 20:44:18 +02:00
Joshua Wise
29f78b18b1
storage/plugins/CurlStorage: URL-encode paths in CurlStorage::MapUTF8
...
When using a database that was not created with a WebDAV music_directory
(i.e., if using a remote database, on which updates happen locally) and
using the Curl storage plugin, MPD would previously send GET requests that
had unescaped spaces in them. This change uses Curl's URL-encode API to
solve this.
2018-08-17 23:03:56 +02:00
Max Kellermann
147872fe97
lib/curl/Easy: add curl_easy_escape() wrapper
2018-08-17 23:02:49 +02:00
Max Kellermann
38edb58054
increment version number to 0.20.22
2018-08-17 23:02:13 +02:00
Max Kellermann
98afae2520
release v0.20.21
2018-08-17 19:50:59 +02:00
Max Kellermann
ddc85c620f
configure.ac: make the GIT_COMMIT command worktree-safe
...
`$srcdir/.git` doesn't exist if `$srcdir` is a worktree.
2018-08-17 19:50:53 +02:00
Max Kellermann
12bc625fe1
android/build.py: add aarch64 support
2018-08-17 19:20:25 +02:00
Max Kellermann
6b407356b9
configure.ac: set ANDROID_ABI=x86 for the Android-x86 build
...
This was missing in commit 8266ab5588
for #69 .
2018-08-17 19:18:29 +02:00
Max Kellermann
a4e0b52468
configure.ac, Makefile.am: add variable ANDROID_ABI
2018-08-17 19:01:37 +02:00
Max Kellermann
98efb4f6d5
android: raise minSdkVersion to 21
...
The number of MPD installs on Android < 5.0 is negligible, and that
API version introduces lots of useful features for MPD.
2018-08-17 19:01:37 +02:00
Max Kellermann
36edb4886c
android/build.py: add variable "android_api_level"
2018-08-17 19:01:37 +02:00
Max Kellermann
76290f786d
python/build/meson.py: set "needs_exe_wrapper=true"
...
Prevent Meson from running Android-x86 binaries. That will fail
because the Android standard libraries are most likely not installed.
2018-08-17 19:00:42 +02:00
Max Kellermann
c6299c26b5
python/build/libs.py: disable libnfs utils/examples
2018-08-17 18:32:07 +02:00
Max Kellermann
fb5f9baf9c
android/build.py: enable libexpat for the "curl" storage plugin
2018-08-17 17:15:05 +02:00
Max Kellermann
dee591d970
python/build/libs.py: disable expat documentation
2018-08-17 17:13:39 +02:00
Joshua Wise
a5cc13b0c5
build: Add libexpat to the crosscompile build on Windows.
...
The Curl plugin requires libexpat in order to work these days, so we should
download and build it in order to get the plugin enabled on Windows.
2018-08-17 17:13:39 +02:00
Max Kellermann
aaf588aeaa
python/libs: upgrade Boost to 1.68.0
2018-08-17 17:13:39 +02:00
Max Kellermann
533a3def9f
Makefile.am: add missing $(CURL_CFLAGS) and $(EXPAT_CFLAGS)
...
Fixes problems with the Windows build because `-DCURL_STATICLIB` was
missing, causing error messages like:
"undefined reference to `__imp_curl_slist_free_all'"
2018-08-17 17:06:03 +02:00
Max Kellermann
fcf487f4e0
playlist/cue: support file type declaration "FLAC" (non-standard)
...
According to http://wiki.hydrogenaud.io/index.php?title=Cue_sheet FLAC
files should use the "WAVE" file type, but I recently encountered CUE
files declared as "FLAC" which could not be read by MPD.
2018-08-13 08:18:18 +02:00
Max Kellermann
906972973e
case-insensitive URI scheme comparison
...
Required according to RFC 3986:
> An implementation should accept uppercase letters as equivalent to
> lowercase in scheme names
Closes #330
2018-08-02 11:01:45 +02:00
Max Kellermann
116edf5fce
util/ASCII: add StringStartsWithCaseASCII()
2018-08-02 10:42:28 +02:00