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
12308a0f
Commit
12308a0f
authored
6 years ago
by
Max Kellermann
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
lib/alsa/NonBlock: move the functions into a class managing the state
parent
a958abde
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
29 additions
and
29 deletions
+29
-29
AlsaInputPlugin.cxx
src/input/plugins/AlsaInputPlugin.cxx
+2
-3
NonBlock.cxx
src/lib/alsa/NonBlock.cxx
+2
-4
NonBlock.hxx
src/lib/alsa/NonBlock.hxx
+21
-14
AlsaMixerPlugin.cxx
src/mixer/plugins/AlsaMixerPlugin.cxx
+2
-3
AlsaOutputPlugin.cxx
src/output/plugins/AlsaOutputPlugin.cxx
+2
-5
No files found.
src/input/plugins/AlsaInputPlugin.cxx
View file @
12308a0f
...
...
@@ -34,7 +34,6 @@
#include "util/Domain.hxx"
#include "util/RuntimeError.hxx"
#include "util/StringCompare.hxx"
#include "util/ReusableArray.hxx"
#include "util/ASCII.hxx"
#include "Log.hxx"
#include "event/MultiSocketMonitor.hxx"
...
...
@@ -69,7 +68,7 @@ class AlsaInputStream final
snd_pcm_t
*
const
capture_handle
;
const
size_t
frame_size
;
ReusableArray
<
pollfd
>
pfd_buffer
;
AlsaNonBlockPcm
non_block
;
DeferEvent
defer_invalidate_sockets
;
...
...
@@ -180,7 +179,7 @@ AlsaInputStream::PrepareSockets() noexcept
return
std
::
chrono
::
steady_clock
::
duration
(
-
1
);
}
return
PrepareAlsaPcmSockets
(
*
this
,
capture_handle
,
pfd_buffer
);
return
non_block
.
PrepareSockets
(
*
this
,
capture_handle
);
}
void
...
...
This diff is collapsed.
Click to expand it.
src/lib/alsa/NonBlock.cxx
View file @
12308a0f
...
...
@@ -23,8 +23,7 @@
#include "util/RuntimeError.hxx"
std
::
chrono
::
steady_clock
::
duration
PrepareAlsaPcmSockets
(
MultiSocketMonitor
&
m
,
snd_pcm_t
*
pcm
,
ReusableArray
<
pollfd
>
&
pfd_buffer
)
AlsaNonBlockPcm
::
PrepareSockets
(
MultiSocketMonitor
&
m
,
snd_pcm_t
*
pcm
)
{
int
count
=
snd_pcm_poll_descriptors_count
(
pcm
);
if
(
count
<=
0
)
{
...
...
@@ -51,8 +50,7 @@ PrepareAlsaPcmSockets(MultiSocketMonitor &m, snd_pcm_t *pcm,
}
std
::
chrono
::
steady_clock
::
duration
PrepareAlsaMixerSockets
(
MultiSocketMonitor
&
m
,
snd_mixer_t
*
mixer
,
ReusableArray
<
pollfd
>
&
pfd_buffer
)
noexcept
AlsaNonBlockMixer
::
PrepareSockets
(
MultiSocketMonitor
&
m
,
snd_mixer_t
*
mixer
)
noexcept
{
int
count
=
snd_mixer_poll_descriptors_count
(
mixer
);
if
(
count
<=
0
)
{
...
...
This diff is collapsed.
Click to expand it.
src/lib/alsa/NonBlock.hxx
View file @
12308a0f
...
...
@@ -30,23 +30,30 @@
class
MultiSocketMonitor
;
/**
* Update #MultiSocketMonitor's socket list from
* snd_pcm_poll_descriptors(). To be called from
* MultiSocketMonitor::PrepareSockets().
*
* Throws exception on error.
* Helper class for #MultiSocketMonitor's virtual methods which
* manages the file descriptors for a #snd_pcm_t.
*/
std
::
chrono
::
steady_clock
::
duration
PrepareAlsaPcmSockets
(
MultiSocketMonitor
&
m
,
snd_pcm_t
*
pcm
,
ReusableArray
<
pollfd
>
&
pfd_buffer
);
class
AlsaNonBlockPcm
{
ReusableArray
<
pollfd
>
pfd_buffer
;
public
:
/**
* Throws on error.
*/
std
::
chrono
::
steady_clock
::
duration
PrepareSockets
(
MultiSocketMonitor
&
m
,
snd_pcm_t
*
pcm
);
};
/**
* Update #MultiSocketMonitor's socket list from
* snd_mixer_poll_descriptors(). To be called from
* MultiSocketMonitor::PrepareSockets().
* Helper class for #MultiSocketMonitor's virtual methods which
* manages the file descriptors for a #snd_mixer_t.
*/
std
::
chrono
::
steady_clock
::
duration
PrepareAlsaMixerSockets
(
MultiSocketMonitor
&
m
,
snd_mixer_t
*
mixer
,
ReusableArray
<
pollfd
>
&
pfd_buffer
)
noexcept
;
class
AlsaNonBlockMixer
{
ReusableArray
<
pollfd
>
pfd_buffer
;
public
:
std
::
chrono
::
steady_clock
::
duration
PrepareSockets
(
MultiSocketMonitor
&
m
,
snd_mixer_t
*
mixer
)
noexcept
;
};
#endif
This diff is collapsed.
Click to expand it.
src/mixer/plugins/AlsaMixerPlugin.cxx
View file @
12308a0f
...
...
@@ -26,7 +26,6 @@
#include "event/DeferEvent.hxx"
#include "event/Call.hxx"
#include "util/ASCII.hxx"
#include "util/ReusableArray.hxx"
#include "util/Domain.hxx"
#include "util/RuntimeError.hxx"
#include "Log.hxx"
...
...
@@ -48,7 +47,7 @@ class AlsaMixerMonitor final : MultiSocketMonitor {
snd_mixer_t
*
mixer
;
ReusableArray
<
pollfd
>
pfd_buffer
;
AlsaNonBlockMixer
non_block
;
public
:
AlsaMixerMonitor
(
EventLoop
&
_loop
,
snd_mixer_t
*
_mixer
)
...
...
@@ -110,7 +109,7 @@ AlsaMixerMonitor::PrepareSockets() noexcept
return
std
::
chrono
::
steady_clock
::
duration
(
-
1
);
}
return
PrepareAlsaMixerSockets
(
*
this
,
mixer
,
pfd_buff
er
);
return
non_block
.
PrepareSockets
(
*
this
,
mix
er
);
}
void
...
...
This diff is collapsed.
Click to expand it.
src/output/plugins/AlsaOutputPlugin.cxx
View file @
12308a0f
...
...
@@ -148,10 +148,7 @@ class AlsaOutput final
*/
uint8_t
*
silence
;
/**
* For PrepareAlsaPcmSockets().
*/
ReusableArray
<
pollfd
>
pfd_buffer
;
AlsaNonBlockPcm
non_block
;
/**
* For copying data from OutputThread to IOThread.
...
...
@@ -881,7 +878,7 @@ AlsaOutput::PrepareSockets() noexcept
}
try
{
return
PrepareAlsaPcmSockets
(
*
this
,
pcm
,
pfd_buffer
);
return
non_block
.
PrepareSockets
(
*
this
,
pcm
);
}
catch
(...)
{
ClearSocketList
();
LockCaughtError
();
...
...
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