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
30ca6b88
Commit
30ca6b88
authored
Jun 28, 2019
by
Max Kellermann
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'v0.21.x'
parents
cf631fca
c9260215
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
21 additions
and
1 deletion
+21
-1
NEWS
NEWS
+2
-0
AlsaOutputPlugin.cxx
src/output/plugins/AlsaOutputPlugin.cxx
+19
-1
No files found.
NEWS
View file @
30ca6b88
...
@@ -18,6 +18,8 @@ ver 0.21.11 (not yet released)
...
@@ -18,6 +18,8 @@ ver 0.21.11 (not yet released)
* decoder
* decoder
- wildmidi: log error if library initialization fails
- wildmidi: log error if library initialization fails
* output
* output
- alsa: fix busy loop while draining
- alsa: fix missing drain call
- alsa, osx: fix distortions with DSD_U32 and DoP on 32 bit CPUs
- alsa, osx: fix distortions with DSD_U32 and DoP on 32 bit CPUs
* protocol
* protocol
- fix "list" with multiple "group" levels
- fix "list" with multiple "group" levels
...
...
src/output/plugins/AlsaOutputPlugin.cxx
View file @
30ca6b88
...
@@ -766,7 +766,7 @@ AlsaOutput::DrainInternal()
...
@@ -766,7 +766,7 @@ AlsaOutput::DrainInternal()
/* need to call CopyRingToPeriodBuffer() and
/* need to call CopyRingToPeriodBuffer() and
WriteFromPeriodBuffer() again in the next
WriteFromPeriodBuffer() again in the next
iteration, so don't finish the drain just yet */
iteration, so don't finish the drain just yet */
return
period_buffer
.
IsEmpty
()
;
return
false
;
}
}
if
(
!
written
)
if
(
!
written
)
...
@@ -774,6 +774,24 @@ AlsaOutput::DrainInternal()
...
@@ -774,6 +774,24 @@ AlsaOutput::DrainInternal()
don't need to drain it */
don't need to drain it */
return
true
;
return
true
;
switch
(
snd_pcm_state
(
pcm
))
{
case
SND_PCM_STATE_PREPARED
:
case
SND_PCM_STATE_RUNNING
:
/* these states require a call to snd_pcm_drain() */
break
;
case
SND_PCM_STATE_DRAINING
:
/* already draining, but not yet finished; this is
probably a spurious epoll event, and we should wait
for the next one */
return
false
;
default
:
/* all other states cannot be drained, and we're
done */
return
true
;
}
/* .. and finally drain the ALSA hardware buffer */
/* .. and finally drain the ALSA hardware buffer */
int
result
;
int
result
;
...
...
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