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
e8938b10
Commit
e8938b10
authored
Feb 05, 2014
by
Max Kellermann
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
MixerPlugin: add EventLoop& init() parameter
parent
4a283330
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
51 additions
and
43 deletions
+51
-43
Main.cxx
src/Main.cxx
+2
-1
MixerControl.cxx
src/mixer/MixerControl.cxx
+3
-2
MixerControl.hxx
src/mixer/MixerControl.hxx
+2
-1
MixerPlugin.hxx
src/mixer/MixerPlugin.hxx
+3
-1
AlsaMixerPlugin.cxx
src/mixer/plugins/AlsaMixerPlugin.cxx
+8
-5
OssMixerPlugin.cxx
src/mixer/plugins/OssMixerPlugin.cxx
+2
-1
PulseMixerPlugin.cxx
src/mixer/plugins/PulseMixerPlugin.cxx
+2
-1
RoarMixerPlugin.cxx
src/mixer/plugins/RoarMixerPlugin.cxx
+2
-1
SoftwareMixerPlugin.cxx
src/mixer/plugins/SoftwareMixerPlugin.cxx
+1
-1
WinmmMixerPlugin.cxx
src/mixer/plugins/WinmmMixerPlugin.cxx
+2
-1
Init.cxx
src/output/Init.cxx
+8
-7
Internal.hxx
src/output/Internal.hxx
+2
-1
MultipleOutputs.cxx
src/output/MultipleOutputs.cxx
+5
-5
MultipleOutputs.hxx
src/output/MultipleOutputs.hxx
+2
-1
read_mixer.cxx
test/read_mixer.cxx
+2
-6
run_output.cxx
test/run_output.cxx
+5
-8
No files found.
src/Main.cxx
View file @
e8938b10
...
...
@@ -476,7 +476,8 @@ int mpd_main(int argc, char *argv[])
initialize_decoder_and_player
();
volume_init
();
initAudioConfig
();
instance
->
partition
->
outputs
.
Configure
(
instance
->
partition
->
pc
);
instance
->
partition
->
outputs
.
Configure
(
*
main_loop
,
instance
->
partition
->
pc
);
client_manager_init
();
replay_gain_global_init
();
...
...
src/mixer/MixerControl.cxx
View file @
e8938b10
...
...
@@ -25,7 +25,8 @@
#include <assert.h>
Mixer
*
mixer_new
(
const
struct
mixer_plugin
*
plugin
,
void
*
ao
,
mixer_new
(
EventLoop
&
event_loop
,
const
mixer_plugin
*
plugin
,
void
*
ao
,
const
config_param
&
param
,
Error
&
error
)
{
...
...
@@ -33,7 +34,7 @@ mixer_new(const struct mixer_plugin *plugin, void *ao,
assert
(
plugin
!=
nullptr
);
mixer
=
plugin
->
init
(
ao
,
param
,
error
);
mixer
=
plugin
->
init
(
event_loop
,
ao
,
param
,
error
);
assert
(
mixer
==
nullptr
||
mixer
->
IsPlugin
(
*
plugin
));
...
...
src/mixer/MixerControl.hxx
View file @
e8938b10
...
...
@@ -27,11 +27,12 @@
class
Error
;
class
Mixer
;
class
EventLoop
;
struct
mixer_plugin
;
struct
config_param
;
Mixer
*
mixer_new
(
const
mixer_plugin
*
plugin
,
void
*
ao
,
mixer_new
(
EventLoop
&
event_loop
,
const
mixer_plugin
*
plugin
,
void
*
ao
,
const
config_param
&
param
,
Error
&
error
);
...
...
src/mixer/MixerPlugin.hxx
View file @
e8938b10
...
...
@@ -29,6 +29,7 @@
struct
config_param
;
class
Mixer
;
class
EventLoop
;
class
Error
;
struct
mixer_plugin
{
...
...
@@ -41,7 +42,8 @@ struct mixer_plugin {
* nullptr to ignore errors
* @return a mixer object, or nullptr on error
*/
Mixer
*
(
*
init
)(
void
*
ao
,
const
config_param
&
param
,
Mixer
*
(
*
init
)(
EventLoop
&
event_loop
,
void
*
ao
,
const
config_param
&
param
,
Error
&
error
);
/**
...
...
src/mixer/plugins/AlsaMixerPlugin.cxx
View file @
e8938b10
...
...
@@ -21,7 +21,6 @@
#include "mixer/MixerInternal.hxx"
#include "output/OutputAPI.hxx"
#include "GlobalEvents.hxx"
#include "Main.hxx"
#include "event/MultiSocketMonitor.hxx"
#include "event/DeferredMonitor.hxx"
#include "event/Loop.hxx"
...
...
@@ -62,6 +61,8 @@ private:
};
class
AlsaMixer
final
:
public
Mixer
{
EventLoop
&
event_loop
;
const
char
*
device
;
const
char
*
control
;
unsigned
int
index
;
...
...
@@ -75,7 +76,8 @@ class AlsaMixer final : public Mixer {
AlsaMixerMonitor
*
monitor
;
public
:
AlsaMixer
()
:
Mixer
(
alsa_mixer_plugin
)
{}
AlsaMixer
(
EventLoop
&
_event_loop
)
:
Mixer
(
alsa_mixer_plugin
),
event_loop
(
_event_loop
)
{}
void
Configure
(
const
config_param
&
param
);
bool
Setup
(
Error
&
error
);
...
...
@@ -162,10 +164,11 @@ AlsaMixer::Configure(const config_param ¶m)
}
static
Mixer
*
alsa_mixer_init
(
gcc_unused
void
*
ao
,
const
config_param
&
param
,
alsa_mixer_init
(
EventLoop
&
event_loop
,
gcc_unused
void
*
ao
,
const
config_param
&
param
,
gcc_unused
Error
&
error
)
{
AlsaMixer
*
am
=
new
AlsaMixer
();
AlsaMixer
*
am
=
new
AlsaMixer
(
event_loop
);
am
->
Configure
(
param
);
return
am
;
...
...
@@ -237,7 +240,7 @@ AlsaMixer::Setup(Error &error)
snd_mixer_elem_set_callback
(
elem
,
alsa_mixer_elem_callback
);
monitor
=
new
AlsaMixerMonitor
(
*
main
_loop
,
handle
);
monitor
=
new
AlsaMixerMonitor
(
event
_loop
,
handle
);
return
true
;
}
...
...
src/mixer/plugins/OssMixerPlugin.cxx
View file @
e8938b10
...
...
@@ -96,7 +96,8 @@ OssMixer::Configure(const config_param ¶m, Error &error)
}
static
Mixer
*
oss_mixer_init
(
gcc_unused
void
*
ao
,
const
config_param
&
param
,
oss_mixer_init
(
gcc_unused
EventLoop
&
event_loop
,
gcc_unused
void
*
ao
,
const
config_param
&
param
,
Error
&
error
)
{
OssMixer
*
om
=
new
OssMixer
();
...
...
src/mixer/plugins/PulseMixerPlugin.cxx
View file @
e8938b10
...
...
@@ -143,7 +143,8 @@ pulse_mixer_on_change(PulseMixer *pm,
}
static
Mixer
*
pulse_mixer_init
(
void
*
ao
,
gcc_unused
const
config_param
&
param
,
pulse_mixer_init
(
gcc_unused
EventLoop
&
event_loop
,
void
*
ao
,
gcc_unused
const
config_param
&
param
,
Error
&
error
)
{
PulseOutput
*
po
=
(
PulseOutput
*
)
ao
;
...
...
src/mixer/plugins/RoarMixerPlugin.cxx
View file @
e8938b10
...
...
@@ -34,7 +34,8 @@ struct RoarMixer final : public Mixer {
};
static
Mixer
*
roar_mixer_init
(
void
*
ao
,
gcc_unused
const
config_param
&
param
,
roar_mixer_init
(
gcc_unused
EventLoop
&
event_loop
,
void
*
ao
,
gcc_unused
const
config_param
&
param
,
gcc_unused
Error
&
error
)
{
return
new
RoarMixer
((
RoarOutput
*
)
ao
);
...
...
src/mixer/plugins/SoftwareMixerPlugin.cxx
View file @
e8938b10
...
...
@@ -67,7 +67,7 @@ struct SoftwareMixer final : public Mixer {
};
static
Mixer
*
software_mixer_init
(
gcc_unused
void
*
ao
,
software_mixer_init
(
gcc_unused
EventLoop
&
event_loop
,
gcc_unused
void
*
ao
,
gcc_unused
const
config_param
&
param
,
gcc_unused
Error
&
error
)
{
...
...
src/mixer/plugins/WinmmMixerPlugin.cxx
View file @
e8938b10
...
...
@@ -55,7 +55,8 @@ winmm_volume_encode(int volume)
}
static
Mixer
*
winmm_mixer_init
(
void
*
ao
,
gcc_unused
const
config_param
&
param
,
winmm_mixer_init
(
gcc_unused
EventLoop
&
event_loop
,
void
*
ao
,
gcc_unused
const
config_param
&
param
,
gcc_unused
Error
&
error
)
{
assert
(
ao
!=
nullptr
);
...
...
src/output/Init.cxx
View file @
e8938b10
...
...
@@ -112,7 +112,7 @@ audio_output_mixer_type(const config_param ¶m)
}
static
Mixer
*
audio_output_load_mixer
(
AudioOutput
*
ao
,
audio_output_load_mixer
(
EventLoop
&
event_loop
,
AudioOutput
*
ao
,
const
config_param
&
param
,
const
struct
mixer_plugin
*
plugin
,
Filter
&
filter_chain
,
...
...
@@ -129,10 +129,10 @@ audio_output_load_mixer(AudioOutput *ao,
if
(
plugin
==
nullptr
)
return
nullptr
;
return
mixer_new
(
plugin
,
ao
,
param
,
error
);
return
mixer_new
(
event_loop
,
plugin
,
ao
,
param
,
error
);
case
MIXER_TYPE_SOFTWARE
:
mixer
=
mixer_new
(
&
software_mixer_plugin
,
nullptr
,
mixer
=
mixer_new
(
event_loop
,
&
software_mixer_plugin
,
nullptr
,
config_param
(),
IgnoreError
());
assert
(
mixer
!=
nullptr
);
...
...
@@ -211,7 +211,8 @@ AudioOutput::Configure(const config_param ¶m, Error &error)
}
static
bool
audio_output_setup
(
AudioOutput
*
ao
,
const
config_param
&
param
,
audio_output_setup
(
EventLoop
&
event_loop
,
AudioOutput
*
ao
,
const
config_param
&
param
,
Error
&
error
)
{
...
...
@@ -241,7 +242,7 @@ audio_output_setup(AudioOutput *ao, const config_param ¶m,
/* set up the mixer */
Error
mixer_error
;
ao
->
mixer
=
audio_output_load_mixer
(
ao
,
param
,
ao
->
mixer
=
audio_output_load_mixer
(
event_loop
,
ao
,
param
,
ao
->
plugin
.
mixer_plugin
,
*
ao
->
filter
,
mixer_error
);
if
(
ao
->
mixer
==
nullptr
&&
mixer_error
.
IsDefined
())
...
...
@@ -277,7 +278,7 @@ audio_output_setup(AudioOutput *ao, const config_param ¶m,
}
AudioOutput
*
audio_output_new
(
const
config_param
&
param
,
audio_output_new
(
EventLoop
&
event_loop
,
const
config_param
&
param
,
PlayerControl
&
pc
,
Error
&
error
)
{
...
...
@@ -316,7 +317,7 @@ audio_output_new(const config_param ¶m,
if
(
ao
==
nullptr
)
return
nullptr
;
if
(
!
audio_output_setup
(
ao
,
param
,
error
))
{
if
(
!
audio_output_setup
(
event_loop
,
ao
,
param
,
error
))
{
ao_plugin_finish
(
ao
);
return
nullptr
;
}
...
...
src/output/Internal.hxx
View file @
e8938b10
...
...
@@ -32,6 +32,7 @@
class
Error
;
class
Filter
;
class
MusicPipe
;
class
EventLoop
;
struct
music_chunk
;
struct
config_param
;
struct
PlayerControl
;
...
...
@@ -422,7 +423,7 @@ private:
extern
struct
notify
audio_output_client_notify
;
AudioOutput
*
audio_output_new
(
const
config_param
&
param
,
audio_output_new
(
EventLoop
&
event_loop
,
const
config_param
&
param
,
PlayerControl
&
pc
,
Error
&
error
);
...
...
src/output/MultipleOutputs.cxx
View file @
e8938b10
...
...
@@ -50,10 +50,10 @@ MultipleOutputs::~MultipleOutputs()
}
static
AudioOutput
*
LoadOutput
(
PlayerControl
&
pc
,
const
config_param
&
param
)
LoadOutput
(
EventLoop
&
event_loop
,
PlayerControl
&
pc
,
const
config_param
&
param
)
{
Error
error
;
AudioOutput
*
output
=
audio_output_new
(
param
,
pc
,
error
);
AudioOutput
*
output
=
audio_output_new
(
event_loop
,
param
,
pc
,
error
);
if
(
output
==
nullptr
)
{
if
(
param
.
line
>
0
)
FormatFatalError
(
"line %i: %s"
,
...
...
@@ -67,12 +67,12 @@ LoadOutput(PlayerControl &pc, const config_param ¶m)
}
void
MultipleOutputs
::
Configure
(
PlayerControl
&
pc
)
MultipleOutputs
::
Configure
(
EventLoop
&
event_loop
,
PlayerControl
&
pc
)
{
const
config_param
*
param
=
nullptr
;
while
((
param
=
config_get_next_param
(
CONF_AUDIO_OUTPUT
,
param
))
!=
nullptr
)
{
auto
output
=
LoadOutput
(
pc
,
*
param
);
auto
output
=
LoadOutput
(
event_loop
,
pc
,
*
param
);
if
(
FindByName
(
output
->
name
)
!=
nullptr
)
FormatFatalError
(
"output devices with identical "
"names: %s"
,
output
->
name
);
...
...
@@ -83,7 +83,7 @@ MultipleOutputs::Configure(PlayerControl &pc)
if
(
outputs
.
empty
())
{
/* auto-detect device */
const
config_param
empty
;
auto
output
=
LoadOutput
(
pc
,
empty
);
auto
output
=
LoadOutput
(
event_loop
,
pc
,
empty
);
outputs
.
push_back
(
output
);
}
}
...
...
src/output/MultipleOutputs.hxx
View file @
e8938b10
...
...
@@ -37,6 +37,7 @@
struct
AudioFormat
;
class
MusicBuffer
;
class
MusicPipe
;
class
EventLoop
;
struct
music_chunk
;
struct
PlayerControl
;
struct
AudioOutput
;
...
...
@@ -72,7 +73,7 @@ public:
MultipleOutputs
();
~
MultipleOutputs
();
void
Configure
(
PlayerControl
&
pc
);
void
Configure
(
EventLoop
&
event_loop
,
PlayerControl
&
pc
);
/**
* Returns the total number of audio output devices, including
...
...
test/read_mixer.cxx
View file @
e8938b10
...
...
@@ -35,8 +35,6 @@
#include <string.h>
#include <unistd.h>
EventLoop
*
main_loop
;
#ifdef HAVE_PULSE
#include "output/plugins/PulseOutputPlugin.hxx"
...
...
@@ -115,10 +113,10 @@ int main(int argc, gcc_unused char **argv)
g_thread_init
(
NULL
);
#endif
main_loop
=
new
EventL
oop
;
EventLoop
event_l
oop
;
Error
error
;
Mixer
*
mixer
=
mixer_new
(
&
alsa_mixer_plugin
,
nullptr
,
Mixer
*
mixer
=
mixer_new
(
event_loop
,
&
alsa_mixer_plugin
,
nullptr
,
config_param
(),
error
);
if
(
mixer
==
NULL
)
{
LogError
(
error
,
"mixer_new() failed"
);
...
...
@@ -135,8 +133,6 @@ int main(int argc, gcc_unused char **argv)
mixer_close
(
mixer
);
mixer_free
(
mixer
);
delete
main_loop
;
assert
(
volume
>=
-
1
&&
volume
<=
100
);
if
(
volume
<
0
)
{
...
...
test/run_output.cxx
View file @
e8938b10
...
...
@@ -45,8 +45,6 @@
#include <stdlib.h>
#include <stdio.h>
EventLoop
*
main_loop
;
void
GlobalEvents
::
Emit
(
gcc_unused
Event
event
)
{
...
...
@@ -80,7 +78,7 @@ PlayerControl::PlayerControl(gcc_unused MultipleOutputs &_outputs,
PlayerControl
::~
PlayerControl
()
{}
static
AudioOutput
*
load_audio_output
(
const
char
*
name
)
load_audio_output
(
EventLoop
&
event_loop
,
const
char
*
name
)
{
const
struct
config_param
*
param
;
...
...
@@ -95,7 +93,8 @@ load_audio_output(const char *name)
Error
error
;
AudioOutput
*
ao
=
audio_output_new
(
*
param
,
dummy_player_control
,
error
);
audio_output_new
(
event_loop
,
*
param
,
dummy_player_control
,
error
);
if
(
ao
==
nullptr
)
LogError
(
error
);
...
...
@@ -189,14 +188,14 @@ int main(int argc, char **argv)
return
EXIT_FAILURE
;
}
main_loop
=
new
EventLoop
()
;
EventLoop
event_loop
;
io_thread_init
();
io_thread_start
();
/* initialize the audio output */
AudioOutput
*
ao
=
load_audio_output
(
argv
[
2
]);
AudioOutput
*
ao
=
load_audio_output
(
event_loop
,
argv
[
2
]);
if
(
ao
==
NULL
)
return
1
;
...
...
@@ -219,8 +218,6 @@ int main(int argc, char **argv)
io_thread_deinit
();
delete
main_loop
;
config_global_finish
();
return
success
?
EXIT_SUCCESS
:
EXIT_FAILURE
;
...
...
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