Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
mpd
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Иван Мажукин
mpd
Commits
43a43c1e
Commit
43a43c1e
authored
7 years ago
by
Max Kellermann
Browse files
Options
Browse Files
Download
Plain Diff
Merge tag 'v0.20.19'
release v0.20.19
parents
e08598e7
7b94f0e3
sisyphus
0.23.15-alt1
0.23.14-alt1
0.23.13-alt1
0.23.12-alt1
0.23.11-alt1
0.23.8-alt3
0.23.8-alt2
0.23.8-alt1
0.21.24-alt1.1
0.21.24-alt1
gb-sisyphus-task339776.6100
gb-sisyphus-task337393.100
gb-sisyphus-task337176.300
gb-sisyphus-task334590.100
gb-sisyphus-task333607.100
gb-sisyphus-task331543.2500
gb-sisyphus-task328663.4700
gb-sisyphus-task325064.100
gb-sisyphus-task319111.4000
gb-sisyphus-task313704.100
gb-sisyphus-task312885.100
gb-sisyphus-task308905.3200
gb-sisyphus-task305294.500
gb-sisyphus-task304007.100
gb-sisyphus-task303674.1700
gb-sisyphus-task298681.300
gb-sisyphus-task296051.1000
gb-sisyphus-task274827.100
gb-sisyphus-task269249.2000
gb-sisyphus-task266579.400
gb-sisyphus-task258132.600
gb-sisyphus-task254601.200
No related merge requests found
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
90 additions
and
20 deletions
+90
-20
NEWS
NEWS
+8
-1
AndroidManifest.xml
android/AndroidManifest.xml
+2
-2
libs.py
python/build/libs.py
+4
-4
ProxyDatabasePlugin.cxx
src/db/plugins/ProxyDatabasePlugin.cxx
+67
-12
DecoderControl.hxx
src/decoder/DecoderControl.hxx
+5
-0
Init.cxx
src/lib/ffmpeg/Init.cxx
+3
-0
Thread.cxx
src/player/Thread.cxx
+1
-1
No files found.
NEWS
View file @
43a43c1e
...
...
@@ -31,11 +31,18 @@ ver 0.21 (not yet released)
- opus: support for sending metadata using ogg stream chaining
* require GCC 5.0
ver 0.20.19 (
not yet released
)
ver 0.20.19 (
2018/04/26
)
* protocol
- validate absolute seek time, reject negative values
* database
- proxy: fix "search already in progress" errors
- proxy: implement "list ... group"
* input
- mms: fix lockup bug and a crash bug
* decoder
- ffmpeg: fix av_register_all() deprecation warning (FFmpeg 4.0)
* player
- fix spurious "Not seekable" error when switching radio streams
* macOS: fix crash bug
ver 0.20.18 (2018/02/24)
...
...
This diff is collapsed.
Click to expand it.
android/AndroidManifest.xml
View file @
43a43c1e
...
...
@@ -2,8 +2,8 @@
<manifest
xmlns:android=
"http://schemas.android.com/apk/res/android"
package=
"org.musicpd"
android:installLocation=
"auto"
android:versionCode=
"1
7
"
android:versionName=
"0.20.1
8
"
>
android:versionCode=
"1
8
"
android:versionName=
"0.20.1
9
"
>
<uses-sdk
android:minSdkVersion=
"14"
android:targetSdkVersion=
"17"
/>
...
...
This diff is collapsed.
Click to expand it.
python/build/libs.py
View file @
43a43c1e
...
...
@@ -17,8 +17,8 @@ libogg = AutotoolsProject(
)
libvorbis
=
AutotoolsProject
(
'http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.
5
.tar.xz'
,
'
28cb28097c07a735d6af56e598e1c90f
'
,
'http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.
6
.tar.xz'
,
'
af00bb5a784e7c9e69f56823de4637c350643deedaf333d0fa86ecdba6fcb415
'
,
'lib/libvorbis.a'
,
[
'--disable-shared'
,
'--enable-static'
,
...
...
@@ -105,8 +105,8 @@ liblame = AutotoolsProject(
)
ffmpeg
=
FfmpegProject
(
'http://ffmpeg.org/releases/ffmpeg-
3.4.2
.tar.xz'
,
'
2b92e9578ef8b3e49eeab229e69305f5f4cbc1fdaa22e927fc7fca18acccd740
'
,
'http://ffmpeg.org/releases/ffmpeg-
4.0
.tar.xz'
,
'
ed945daf40b124e77a685893cc025d086f638bc703183460aff49508edb3a43f
'
,
'lib/libavcodec.a'
,
[
'--disable-shared'
,
'--enable-static'
,
...
...
This diff is collapsed.
Click to expand it.
src/db/plugins/ProxyDatabasePlugin.cxx
View file @
43a43c1e
...
...
@@ -34,6 +34,7 @@
#include "tag/Builder.hxx"
#include "tag/Tag.hxx"
#include "tag/Mask.hxx"
#include "tag/ParseName.hxx"
#include "util/ScopeExit.hxx"
#include "util/RuntimeError.hxx"
#include "protocol/Ack.hxx"
...
...
@@ -335,6 +336,35 @@ SendConstraints(mpd_connection *connection, const DatabaseSelection &selection)
return
true
;
}
static
bool
SendGroupMask
(
mpd_connection
*
connection
,
TagMask
mask
)
{
#if LIBMPDCLIENT_CHECK_VERSION(2,12,0)
for
(
unsigned
i
=
0
;
i
<
TAG_NUM_OF_ITEM_TYPES
;
++
i
)
{
const
auto
tag_type
=
TagType
(
i
);
if
(
!
mask
.
Test
(
tag_type
))
continue
;
const
auto
tag
=
Convert
(
tag_type
);
if
(
tag
==
MPD_TAG_COUNT
)
throw
std
::
runtime_error
(
"Unsupported tag"
);
if
(
!
mpd_search_add_group_tag
(
connection
,
tag
))
return
false
;
}
return
true
;
#else
(
void
)
connection
;
(
void
)
mask
;
if
(
mask
.
TestAny
())
throw
std
::
runtime_error
(
"Grouping requires libmpdclient 2.12"
);
return
true
;
#endif
}
ProxyDatabase
::
ProxyDatabase
(
EventLoop
&
_loop
,
DatabaseListener
&
_listener
,
const
ConfigBlock
&
block
)
:
Database
(
proxy_db_plugin
),
...
...
@@ -700,7 +730,7 @@ static void
SearchSongs
(
struct
mpd_connection
*
connection
,
const
DatabaseSelection
&
selection
,
VisitSong
visit_song
)
{
try
{
assert
(
selection
.
recursive
);
assert
(
visit_song
);
...
...
@@ -727,6 +757,11 @@ SearchSongs(struct mpd_connection *connection,
if
(
!
mpd_response_finish
(
connection
))
ThrowError
(
connection
);
}
catch
(...)
{
if
(
connection
!=
nullptr
)
mpd_search_cancel
(
connection
);
throw
;
}
/**
...
...
@@ -774,9 +809,9 @@ ProxyDatabase::Visit(const DatabaseSelection &selection,
void
ProxyDatabase
::
VisitUniqueTags
(
const
DatabaseSelection
&
selection
,
TagType
tag_type
,
gcc_unused
TagMask
group_mask
,
TagMask
group_mask
,
VisitTag
visit_tag
)
const
{
try
{
// TODO: eliminate the const_cast
const_cast
<
ProxyDatabase
*>
(
this
)
->
EnsureConnected
();
...
...
@@ -785,32 +820,47 @@ ProxyDatabase::VisitUniqueTags(const DatabaseSelection &selection,
throw
std
::
runtime_error
(
"Unsupported tag"
);
if
(
!
mpd_search_db_tags
(
connection
,
tag_type2
)
||
!
SendConstraints
(
connection
,
selection
))
!
SendConstraints
(
connection
,
selection
)
||
!
SendGroupMask
(
connection
,
group_mask
))
ThrowError
(
connection
);
// TODO: use group_mask
if
(
!
mpd_search_commit
(
connection
))
ThrowError
(
connection
);
while
(
auto
*
pair
=
mpd_recv_pair_tag
(
connection
,
tag_type2
))
{
TagBuilder
builder
;
while
(
auto
*
pair
=
mpd_recv_pair
(
connection
))
{
AtScopeExit
(
this
,
pair
)
{
mpd_return_pair
(
connection
,
pair
);
};
TagBuilder
tag
;
tag
.
AddItem
(
tag_type
,
pair
->
value
);
const
auto
current_type
=
tag_name_parse_i
(
pair
->
name
);
if
(
current_type
==
TAG_NUM_OF_ITEM_TYPES
)
continue
;
if
(
tag
.
empty
())
if
(
current_type
==
tag_type
&&
!
builder
.
empty
())
{
try
{
visit_tag
(
builder
.
Commit
());
}
catch
(...)
{
mpd_response_finish
(
connection
);
throw
;
}
}
builder
.
AddItem
(
current_type
,
pair
->
value
);
if
(
!
builder
.
HasType
(
current_type
))
/* if no tag item has been added, then the
given value was not acceptable
(e.g. empty); forcefully insert an empty
tag in this case, as the caller expects the
given tag type to be present */
tag
.
AddEmptyItem
(
tag_type
);
builder
.
AddEmptyItem
(
current_type
);
}
if
(
!
builder
.
empty
())
{
try
{
visit_tag
(
tag
.
Commit
());
visit_tag
(
builder
.
Commit
());
}
catch
(...)
{
mpd_response_finish
(
connection
);
throw
;
...
...
@@ -819,6 +869,11 @@ ProxyDatabase::VisitUniqueTags(const DatabaseSelection &selection,
if
(
!
mpd_response_finish
(
connection
))
ThrowError
(
connection
);
}
catch
(...)
{
if
(
connection
!=
nullptr
)
mpd_search_cancel
(
connection
);
throw
;
}
DatabaseStats
...
...
This diff is collapsed.
Click to expand it.
src/decoder/DecoderControl.hxx
View file @
43a43c1e
...
...
@@ -304,6 +304,11 @@ struct DecoderControl {
gcc_pure
bool
IsCurrentSong
(
const
DetachedSong
&
_song
)
const
noexcept
;
gcc_pure
bool
IsSeekableCurrentSong
(
const
DetachedSong
&
_song
)
const
noexcept
{
return
seekable
&&
IsCurrentSong
(
_song
);
}
private
:
/**
* Wait for the command to be finished by the decoder thread.
...
...
This diff is collapsed.
Click to expand it.
src/lib/ffmpeg/Init.cxx
View file @
43a43c1e
...
...
@@ -33,6 +33,9 @@ FfmpegInit()
{
av_log_set_callback
(
FfmpegLogCallback
);
#if LIBAVFORMAT_VERSION_INT < AV_VERSION_INT(58, 9, 100)
/* deprecated as of FFmpeg 4.0 */
av_register_all
();
#endif
}
This diff is collapsed.
Click to expand it.
src/player/Thread.cxx
View file @
43a43c1e
...
...
@@ -577,7 +577,7 @@ Player::SeekDecoder() noexcept
pc
.
outputs
.
Cancel
();
}
if
(
!
dc
.
IsCurrentSong
(
*
pc
.
next_song
))
{
if
(
!
dc
.
Is
Seekable
CurrentSong
(
*
pc
.
next_song
))
{
/* the decoder is already decoding the "next" song -
stop it and start the previous song again */
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment