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:
commit
7a1b56fe96
7
NEWS
7
NEWS
@ -8,9 +8,14 @@ ver 0.22 (not yet released)
|
|||||||
- ffmpeg: new plugin based on FFmpeg's libavfilter library
|
- ffmpeg: new plugin based on FFmpeg's libavfilter library
|
||||||
- hdcd: new plugin based on FFmpeg's "af_hdcd" for HDCD playback
|
- 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
|
* require Meson 0.49.0 for native libgcrypt-config support
|
||||||
* fix build failure with -Dlocal_socket=false
|
* fix build failure with -Dlocal_socket=false
|
||||||
|
* Haiku
|
||||||
|
- fix build
|
||||||
|
- add version info
|
||||||
|
|
||||||
ver 0.21.6 (2019/03/17)
|
ver 0.21.6 (2019/03/17)
|
||||||
* protocol
|
* protocol
|
||||||
|
@ -2,8 +2,8 @@
|
|||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
package="org.musicpd"
|
package="org.musicpd"
|
||||||
android:installLocation="auto"
|
android:installLocation="auto"
|
||||||
android:versionCode="28"
|
android:versionCode="29"
|
||||||
android:versionName="0.21.6">
|
android:versionName="0.21.7">
|
||||||
|
|
||||||
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="26"/>
|
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="26"/>
|
||||||
|
|
||||||
|
19
meson.build
19
meson.build
@ -390,6 +390,7 @@ more_deps = []
|
|||||||
if is_android
|
if is_android
|
||||||
subdir('src/java')
|
subdir('src/java')
|
||||||
target_type = 'shared_library'
|
target_type = 'shared_library'
|
||||||
|
target_name = 'mpd'
|
||||||
link_args += [
|
link_args += [
|
||||||
'-Wl,--no-undefined,-shared,-Bsymbolic',
|
'-Wl,--no-undefined,-shared,-Bsymbolic',
|
||||||
'-llog',
|
'-llog',
|
||||||
@ -399,12 +400,20 @@ if is_android
|
|||||||
declare_dependency(sources: [classes_jar]),
|
declare_dependency(sources: [classes_jar]),
|
||||||
java_dep,
|
java_dep,
|
||||||
]
|
]
|
||||||
|
elif is_haiku
|
||||||
|
target_type = 'executable'
|
||||||
|
target_name = 'mpd.nores'
|
||||||
|
link_args += [
|
||||||
|
'-lnetwork',
|
||||||
|
'-lbe',
|
||||||
|
]
|
||||||
else
|
else
|
||||||
target_type = 'executable'
|
target_type = 'executable'
|
||||||
|
target_name = 'mpd'
|
||||||
endif
|
endif
|
||||||
|
|
||||||
mpd = build_target(
|
mpd = build_target(
|
||||||
'mpd',
|
target_name,
|
||||||
sources,
|
sources,
|
||||||
target_type: target_type,
|
target_type: target_type,
|
||||||
include_directories: inc,
|
include_directories: inc,
|
||||||
@ -443,6 +452,14 @@ endif
|
|||||||
|
|
||||||
if is_haiku
|
if is_haiku
|
||||||
subdir('src/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
|
endif
|
||||||
|
|
||||||
configure_file(output: 'config.h', configuration: conf)
|
configure_file(output: 'config.h', configuration: conf)
|
||||||
|
@ -112,8 +112,8 @@ liblame = AutotoolsProject(
|
|||||||
)
|
)
|
||||||
|
|
||||||
ffmpeg = FfmpegProject(
|
ffmpeg = FfmpegProject(
|
||||||
'http://ffmpeg.org/releases/ffmpeg-4.1.1.tar.xz',
|
'http://ffmpeg.org/releases/ffmpeg-4.1.3.tar.xz',
|
||||||
'373749824dfd334d84e55dff406729edfd1606575ee44dd485d97d45ea4d2d86',
|
'0c3020452880581a8face91595b239198078645e7d7184273b8bcc7758beb63d',
|
||||||
'lib/libavcodec.a',
|
'lib/libavcodec.a',
|
||||||
[
|
[
|
||||||
'--disable-shared', '--enable-static',
|
'--disable-shared', '--enable-static',
|
||||||
@ -341,8 +341,8 @@ ffmpeg = FfmpegProject(
|
|||||||
)
|
)
|
||||||
|
|
||||||
curl = AutotoolsProject(
|
curl = AutotoolsProject(
|
||||||
'http://curl.haxx.se/download/curl-7.64.0.tar.xz',
|
'http://curl.haxx.se/download/curl-7.64.1.tar.xz',
|
||||||
'2f2f13fa34d44aa29cb444077ad7dc4dc6d189584ad552e0aaeb06e608af6001',
|
'9252332a7f871ce37bfa7f78bdd0a0e3924d8187cc27cb57c76c9474a7168fb3',
|
||||||
'lib/libcurl.a',
|
'lib/libcurl.a',
|
||||||
[
|
[
|
||||||
'--disable-shared', '--enable-static',
|
'--disable-shared', '--enable-static',
|
||||||
@ -375,8 +375,8 @@ libexpat = AutotoolsProject(
|
|||||||
)
|
)
|
||||||
|
|
||||||
libnfs = AutotoolsProject(
|
libnfs = AutotoolsProject(
|
||||||
'https://github.com/sahlberg/libnfs/archive/libnfs-3.0.0.tar.gz',
|
'https://github.com/sahlberg/libnfs/archive/libnfs-4.0.0.tar.gz',
|
||||||
'445d92c5fc55e4a5b115e358e60486cf8f87ee50e0103d46a02e7fb4618566a5',
|
'6ee77e9fe220e2d3e3b1f53cfea04fb319828cc7dbb97dd9df09e46e901d797d',
|
||||||
'lib/libnfs.a',
|
'lib/libnfs.a',
|
||||||
[
|
[
|
||||||
'--disable-shared', '--enable-static',
|
'--disable-shared', '--enable-static',
|
||||||
@ -387,7 +387,7 @@ libnfs = AutotoolsProject(
|
|||||||
|
|
||||||
'--disable-utils', '--disable-examples',
|
'--disable-utils', '--disable-examples',
|
||||||
],
|
],
|
||||||
base='libnfs-libnfs-3.0.0',
|
base='libnfs-libnfs-4.0.0',
|
||||||
autoreconf=True,
|
autoreconf=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include "PlaylistCommands.hxx"
|
#include "PlaylistCommands.hxx"
|
||||||
#include "Request.hxx"
|
#include "Request.hxx"
|
||||||
|
#include "Instance.hxx"
|
||||||
#include "db/Selection.hxx"
|
#include "db/Selection.hxx"
|
||||||
#include "db/DatabasePlaylist.hxx"
|
#include "db/DatabasePlaylist.hxx"
|
||||||
#include "CommandError.hxx"
|
#include "CommandError.hxx"
|
||||||
@ -28,6 +29,7 @@
|
|||||||
#include "PlaylistError.hxx"
|
#include "PlaylistError.hxx"
|
||||||
#include "db/PlaylistVector.hxx"
|
#include "db/PlaylistVector.hxx"
|
||||||
#include "SongLoader.hxx"
|
#include "SongLoader.hxx"
|
||||||
|
#include "song/DetachedSong.hxx"
|
||||||
#include "BulkEdit.hxx"
|
#include "BulkEdit.hxx"
|
||||||
#include "playlist/PlaylistQueue.hxx"
|
#include "playlist/PlaylistQueue.hxx"
|
||||||
#include "playlist/Print.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());
|
const ScopeBulkEdit bulk_edit(client.GetPartition());
|
||||||
|
|
||||||
|
auto &playlist = client.GetPlaylist();
|
||||||
|
const unsigned old_size = playlist.GetLength();
|
||||||
|
|
||||||
const SongLoader loader(client);
|
const SongLoader loader(client);
|
||||||
playlist_open_into_queue(uri,
|
playlist_open_into_queue(uri,
|
||||||
range.start, range.end,
|
range.start, range.end,
|
||||||
client.GetPlaylist(),
|
playlist,
|
||||||
client.GetPlayerControl(), loader);
|
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;
|
return CommandResult::OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -39,8 +39,8 @@ InitHybridDsdDecoder(const ConfigBlock &block)
|
|||||||
without a DSD DAC, the PCM (=ALAC) part of the file is
|
without a DSD DAC, the PCM (=ALAC) part of the file is
|
||||||
better */
|
better */
|
||||||
if (block.GetBlockParam("enabled") == nullptr) {
|
if (block.GetBlockParam("enabled") == nullptr) {
|
||||||
LogInfo(hybrid_dsd_domain,
|
LogDebug(hybrid_dsd_domain,
|
||||||
"The Hybrid DSD decoder is disabled because it was not explicitly enabled");
|
"The Hybrid DSD decoder is disabled because it was not explicitly enabled");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
3
src/haiku/add_resources.sh
Executable file
3
src/haiku/add_resources.sh
Executable file
@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
cp "$2" "$1" && xres -o "$1" -- "$3" && mimeset -f "$1" || (rm -f "$1"; exit 1)
|
@ -1,18 +1,26 @@
|
|||||||
rc = meson.find_program('rc')
|
haiku_conf = configuration_data()
|
||||||
xres = meson.find_program('xres')
|
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(
|
rsrc = custom_target(
|
||||||
'mpd.rsrc',
|
'mpd.rsrc',
|
||||||
output: 'mpd.rsrc',
|
output: 'mpd.rsrc',
|
||||||
input: 'mpd.rdef',
|
input: mpd_rdef,
|
||||||
command: [rc, '-o', '@OUTPUT@', '@INPUT@'],
|
command: [rc, '-o', '@OUTPUT@', '@INPUT@'],
|
||||||
)
|
)
|
||||||
|
|
||||||
custom_target(
|
addres = files('add_resources.sh')
|
||||||
'mpd.rsrc',
|
|
||||||
output: 'mpd',
|
|
||||||
input: [mpd, rsrc],
|
|
||||||
command: [xres, '-o', '@OUTPUT@', '--', '@INPUT@'],
|
|
||||||
install: true,
|
|
||||||
install_dir: get_option('bindir'),
|
|
||||||
)
|
|
||||||
|
@ -2,7 +2,15 @@ resource app_signature "application/x-vnd.MusicPD";
|
|||||||
|
|
||||||
resource app_flags B_BACKGROUND_APP;
|
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 {
|
resource vector_icon {
|
||||||
$"6E6369661F050102031604BEE29BBEC5403EC540BEE29B4A10004A10000001C6"
|
$"6E6369661F050102031604BEE29BBEC5403EC540BEE29B4A10004A10000001C6"
|
@ -306,9 +306,8 @@ input_curl_init(EventLoop &event_loop, const ConfigBlock &block)
|
|||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
curl_init = new CurlInit(event_loop);
|
curl_init = new CurlInit(event_loop);
|
||||||
} catch (const std::runtime_error &e) {
|
} catch (...) {
|
||||||
LogError(e);
|
std::throw_with_nested(PluginUnavailable("CURL initialization failed"));
|
||||||
throw PluginUnavailable(e.what());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const auto version_info = curl_version_info(CURLVERSION_FIRST);
|
const auto version_info = curl_version_info(CURLVERSION_FIRST);
|
||||||
|
@ -28,8 +28,6 @@
|
|||||||
|
|
||||||
#include <libsmbclient.h>
|
#include <libsmbclient.h>
|
||||||
|
|
||||||
#include <stdexcept>
|
|
||||||
|
|
||||||
class SmbclientInputStream final : public InputStream {
|
class SmbclientInputStream final : public InputStream {
|
||||||
SMBCCTX *ctx;
|
SMBCCTX *ctx;
|
||||||
int fd;
|
int fd;
|
||||||
@ -72,9 +70,8 @@ input_smbclient_init(EventLoop &, const ConfigBlock &)
|
|||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
SmbclientInit();
|
SmbclientInit();
|
||||||
} catch (const std::runtime_error &e) {
|
} catch (...) {
|
||||||
// TODO: use std::throw_with_nested()?
|
std::throw_with_nested(PluginUnavailable("libsmbclient initialization failed"));
|
||||||
throw PluginUnavailable(e.what());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: create one global SMBCCTX here?
|
// TODO: create one global SMBCCTX here?
|
||||||
|
@ -140,9 +140,6 @@ HaikuOutput::Close() noexcept
|
|||||||
|
|
||||||
HaikuOutput::~HaikuOutput()
|
HaikuOutput::~HaikuOutput()
|
||||||
{
|
{
|
||||||
delete_sem(new_buffer);
|
|
||||||
delete_sem(buffer_done);
|
|
||||||
|
|
||||||
finalize_application();
|
finalize_application();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user