release v0.21.7

-----BEGIN PGP SIGNATURE-----
 
 iQJEBAABCgAuFiEEA5IzWngIOJSkMBxDI26KWMbbRRIFAlykiHUQHG1heEBtdXNp
 Y3BkLm9yZwAKCRAjbopYxttFErFWEACP0T0em6pKOV9W2YHivtnJoBhb3wG46a2w
 rnyNuj0FM8nhMsWunvqbOExogGxZziTKYhSdvzOBwNSleG1Eyjks8yNuPpp7nHH/
 Y5gyRr1o6BR4hkukWDAIBWN/iXatUWHb/itInN0KhrqyU0YptNGbOF87vLfAZlqW
 MNVTXO4YAx/tYHEt/4ze/ljtrNvXsB8Zw86cNI+jrivdujdKVfiN5dUpbc5Hj8DA
 3i6Y5YFm4OvHbFENeMy/kVht8Ln0/3Ak+Z9L7ti9ZSWLbOaQc7+Nl0P/3pfftzWf
 YK6DsRyvJ2dEPylAXqRIkZWdIU1VwjKc7cKYJFljNAMhaUWcrefXIGQOv0+1kbqz
 CxLgk3hIK3R7lGbxLXDU7xD05hbOGgXe1BKO9alGhEsyB8+sT6qfVay/RlJPN+da
 mSnslSzPyS+p9ZdyDnWXq68FS8BIriajDVXP7/WNMKz9OEe5BiXBBQVDM5/XbxQU
 qPxLn/BVYzDXOw8msgyIZ/vqE1rpomJDILsK/EMJ/HLAOdR/Jo10wIAGAqiLPp2j
 n2R9jS7nxZKmEvcZkg/HroNiGSpT89f38bbW/MCdzxAkg4vQDxQ0OE9GoeBi3oiP
 g/SkM/sJ9UdlC3bq7TAhxK0huimAEg5Rh6Z1II00D89QmWFQT0hjmxo++9WwCQXw
 CkIiKRf7Ug==
 =KzqS
 -----END PGP SIGNATURE-----

Merge tag 'v0.21.7'

release v0.21.7
This commit is contained in:
Max Kellermann 2019-04-03 12:32:20 +02:00
commit 7a1b56fe96
12 changed files with 83 additions and 37 deletions

7
NEWS
View File

@ -8,9 +8,14 @@ ver 0.22 (not yet released)
- ffmpeg: new plugin based on FFmpeg's libavfilter library
- hdcd: new plugin based on FFmpeg's "af_hdcd" for HDCD playback
ver 0.21.7 (not yet released)
ver 0.21.7 (2019/04/03)
* input
- qobuz/tidal: scan tags when loading a playlist
* require Meson 0.49.0 for native libgcrypt-config support
* fix build failure with -Dlocal_socket=false
* Haiku
- fix build
- add version info
ver 0.21.6 (2019/03/17)
* protocol

View File

@ -2,8 +2,8 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.musicpd"
android:installLocation="auto"
android:versionCode="28"
android:versionName="0.21.6">
android:versionCode="29"
android:versionName="0.21.7">
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="26"/>

View File

@ -390,6 +390,7 @@ more_deps = []
if is_android
subdir('src/java')
target_type = 'shared_library'
target_name = 'mpd'
link_args += [
'-Wl,--no-undefined,-shared,-Bsymbolic',
'-llog',
@ -399,12 +400,20 @@ if is_android
declare_dependency(sources: [classes_jar]),
java_dep,
]
elif is_haiku
target_type = 'executable'
target_name = 'mpd.nores'
link_args += [
'-lnetwork',
'-lbe',
]
else
target_type = 'executable'
target_name = 'mpd'
endif
mpd = build_target(
'mpd',
target_name,
sources,
target_type: target_type,
include_directories: inc,
@ -443,6 +452,14 @@ endif
if is_haiku
subdir('src/haiku')
custom_target(
'mpd',
output: 'mpd',
input: [mpd, rsrc],
command: [addres, '@OUTPUT@', '@INPUT0@', '@INPUT1@'],
install: true,
install_dir: get_option('bindir'),
)
endif
configure_file(output: 'config.h', configuration: conf)

View File

@ -112,8 +112,8 @@ liblame = AutotoolsProject(
)
ffmpeg = FfmpegProject(
'http://ffmpeg.org/releases/ffmpeg-4.1.1.tar.xz',
'373749824dfd334d84e55dff406729edfd1606575ee44dd485d97d45ea4d2d86',
'http://ffmpeg.org/releases/ffmpeg-4.1.3.tar.xz',
'0c3020452880581a8face91595b239198078645e7d7184273b8bcc7758beb63d',
'lib/libavcodec.a',
[
'--disable-shared', '--enable-static',
@ -341,8 +341,8 @@ ffmpeg = FfmpegProject(
)
curl = AutotoolsProject(
'http://curl.haxx.se/download/curl-7.64.0.tar.xz',
'2f2f13fa34d44aa29cb444077ad7dc4dc6d189584ad552e0aaeb06e608af6001',
'http://curl.haxx.se/download/curl-7.64.1.tar.xz',
'9252332a7f871ce37bfa7f78bdd0a0e3924d8187cc27cb57c76c9474a7168fb3',
'lib/libcurl.a',
[
'--disable-shared', '--enable-static',
@ -375,8 +375,8 @@ libexpat = AutotoolsProject(
)
libnfs = AutotoolsProject(
'https://github.com/sahlberg/libnfs/archive/libnfs-3.0.0.tar.gz',
'445d92c5fc55e4a5b115e358e60486cf8f87ee50e0103d46a02e7fb4618566a5',
'https://github.com/sahlberg/libnfs/archive/libnfs-4.0.0.tar.gz',
'6ee77e9fe220e2d3e3b1f53cfea04fb319828cc7dbb97dd9df09e46e901d797d',
'lib/libnfs.a',
[
'--disable-shared', '--enable-static',
@ -387,7 +387,7 @@ libnfs = AutotoolsProject(
'--disable-utils', '--disable-examples',
],
base='libnfs-libnfs-3.0.0',
base='libnfs-libnfs-4.0.0',
autoreconf=True,
)

View File

@ -20,6 +20,7 @@
#include "config.h"
#include "PlaylistCommands.hxx"
#include "Request.hxx"
#include "Instance.hxx"
#include "db/Selection.hxx"
#include "db/DatabasePlaylist.hxx"
#include "CommandError.hxx"
@ -28,6 +29,7 @@
#include "PlaylistError.hxx"
#include "db/PlaylistVector.hxx"
#include "SongLoader.hxx"
#include "song/DetachedSong.hxx"
#include "BulkEdit.hxx"
#include "playlist/PlaylistQueue.hxx"
#include "playlist/Print.hxx"
@ -77,11 +79,21 @@ handle_load(Client &client, Request args, gcc_unused Response &r)
const ScopeBulkEdit bulk_edit(client.GetPartition());
auto &playlist = client.GetPlaylist();
const unsigned old_size = playlist.GetLength();
const SongLoader loader(client);
playlist_open_into_queue(uri,
range.start, range.end,
client.GetPlaylist(),
playlist,
client.GetPlayerControl(), loader);
/* invoke the RemoteTagScanner on all newly added songs */
auto &instance = client.GetInstance();
const unsigned new_size = playlist.GetLength();
for (unsigned i = old_size; i < new_size; ++i)
instance.LookupRemoteTag(playlist.queue.Get(i).GetURI());
return CommandResult::OK;
}

View File

@ -39,8 +39,8 @@ InitHybridDsdDecoder(const ConfigBlock &block)
without a DSD DAC, the PCM (=ALAC) part of the file is
better */
if (block.GetBlockParam("enabled") == nullptr) {
LogInfo(hybrid_dsd_domain,
"The Hybrid DSD decoder is disabled because it was not explicitly enabled");
LogDebug(hybrid_dsd_domain,
"The Hybrid DSD decoder is disabled because it was not explicitly enabled");
return false;
}

3
src/haiku/add_resources.sh Executable file
View File

@ -0,0 +1,3 @@
#!/bin/sh
cp "$2" "$1" && xres -o "$1" -- "$3" && mimeset -f "$1" || (rm -f "$1"; exit 1)

View File

@ -1,18 +1,26 @@
rc = meson.find_program('rc')
xres = meson.find_program('xres')
haiku_conf = configuration_data()
haiku_conf.set('VERSION', meson.project_version())
splitted_version = meson.project_version().split('~')[0].split('.')
haiku_conf.set('VERSION_MAJOR', splitted_version[0])
haiku_conf.set('VERSION_MINOR', splitted_version.get(1, '0'))
haiku_conf.set('VERSION_REVISION', splitted_version.get(2, '0'))
haiku_conf.set('VERSION_EXTRA', splitted_version.get(3, '0'))
mpd_rdef = configure_file(
input: 'mpd.rdef.in',
output: 'mpd.rdef',
configuration: haiku_conf,
)
rc = find_program('rc')
xres = find_program('xres')
rsrc = custom_target(
'mpd.rsrc',
output: 'mpd.rsrc',
input: 'mpd.rdef',
input: mpd_rdef,
command: [rc, '-o', '@OUTPUT@', '@INPUT@'],
)
custom_target(
'mpd.rsrc',
output: 'mpd',
input: [mpd, rsrc],
command: [xres, '-o', '@OUTPUT@', '--', '@INPUT@'],
install: true,
install_dir: get_option('bindir'),
)
addres = files('add_resources.sh')

View File

@ -2,7 +2,15 @@ resource app_signature "application/x-vnd.MusicPD";
resource app_flags B_BACKGROUND_APP;
// TODO: resource app_version {};
resource app_version {
major = @VERSION_MAJOR@,
middle = @VERSION_MINOR@,
minor = @VERSION_REVISION@,
variety = B_APPV_ALPHA,
internal = @VERSION_EXTRA@,
short_info = "Music Player Daemon @VERSION@",
long_info = "Music Player Daemon @VERSION@ ©The Music Player Daemon Project"
};
resource vector_icon {
$"6E6369661F050102031604BEE29BBEC5403EC540BEE29B4A10004A10000001C6"

View File

@ -306,9 +306,8 @@ input_curl_init(EventLoop &event_loop, const ConfigBlock &block)
{
try {
curl_init = new CurlInit(event_loop);
} catch (const std::runtime_error &e) {
LogError(e);
throw PluginUnavailable(e.what());
} catch (...) {
std::throw_with_nested(PluginUnavailable("CURL initialization failed"));
}
const auto version_info = curl_version_info(CURLVERSION_FIRST);

View File

@ -28,8 +28,6 @@
#include <libsmbclient.h>
#include <stdexcept>
class SmbclientInputStream final : public InputStream {
SMBCCTX *ctx;
int fd;
@ -72,9 +70,8 @@ input_smbclient_init(EventLoop &, const ConfigBlock &)
{
try {
SmbclientInit();
} catch (const std::runtime_error &e) {
// TODO: use std::throw_with_nested()?
throw PluginUnavailable(e.what());
} catch (...) {
std::throw_with_nested(PluginUnavailable("libsmbclient initialization failed"));
}
// TODO: create one global SMBCCTX here?

View File

@ -140,9 +140,6 @@ HaikuOutput::Close() noexcept
HaikuOutput::~HaikuOutput()
{
delete_sem(new_buffer);
delete_sem(buffer_done);
finalize_application();
}