output/pulse: add "pause" flag
Don't access AudioOutput::pause.
This commit is contained in:
parent
ae4b30a697
commit
dd29e6e475
@ -61,6 +61,8 @@ class PulseOutput {
|
|||||||
|
|
||||||
size_t writable;
|
size_t writable;
|
||||||
|
|
||||||
|
bool pause;
|
||||||
|
|
||||||
explicit PulseOutput(const ConfigBlock &block);
|
explicit PulseOutput(const ConfigBlock &block);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -674,6 +676,8 @@ PulseOutput::Open(AudioFormat &audio_format)
|
|||||||
throw MakePulseError(context,
|
throw MakePulseError(context,
|
||||||
"pa_stream_connect_playback() has failed");
|
"pa_stream_connect_playback() has failed");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pause = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void
|
inline void
|
||||||
@ -723,13 +727,13 @@ PulseOutput::WaitStream()
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
PulseOutput::StreamPause(bool pause)
|
PulseOutput::StreamPause(bool _pause)
|
||||||
{
|
{
|
||||||
assert(mainloop != nullptr);
|
assert(mainloop != nullptr);
|
||||||
assert(context != nullptr);
|
assert(context != nullptr);
|
||||||
assert(stream != nullptr);
|
assert(stream != nullptr);
|
||||||
|
|
||||||
pa_operation *o = pa_stream_cork(stream, pause,
|
pa_operation *o = pa_stream_cork(stream, _pause,
|
||||||
pulse_output_stream_success_cb, this);
|
pulse_output_stream_success_cb, this);
|
||||||
if (o == nullptr)
|
if (o == nullptr)
|
||||||
throw MakePulseError(context,
|
throw MakePulseError(context,
|
||||||
@ -746,7 +750,7 @@ PulseOutput::Delay() noexcept
|
|||||||
Pulse::LockGuard lock(mainloop);
|
Pulse::LockGuard lock(mainloop);
|
||||||
|
|
||||||
auto result = std::chrono::steady_clock::duration::zero();
|
auto result = std::chrono::steady_clock::duration::zero();
|
||||||
if (base.pause && pa_stream_is_corked(stream) &&
|
if (pause && pa_stream_is_corked(stream) &&
|
||||||
pa_stream_get_state(stream) == PA_STREAM_READY)
|
pa_stream_get_state(stream) == PA_STREAM_READY)
|
||||||
/* idle while paused */
|
/* idle while paused */
|
||||||
result = std::chrono::seconds(1);
|
result = std::chrono::seconds(1);
|
||||||
@ -762,6 +766,8 @@ PulseOutput::Play(const void *chunk, size_t size)
|
|||||||
|
|
||||||
Pulse::LockGuard lock(mainloop);
|
Pulse::LockGuard lock(mainloop);
|
||||||
|
|
||||||
|
pause = false;
|
||||||
|
|
||||||
/* check if the stream is (already) connected */
|
/* check if the stream is (already) connected */
|
||||||
|
|
||||||
WaitStream();
|
WaitStream();
|
||||||
@ -836,6 +842,8 @@ PulseOutput::Pause()
|
|||||||
|
|
||||||
Pulse::LockGuard lock(mainloop);
|
Pulse::LockGuard lock(mainloop);
|
||||||
|
|
||||||
|
pause = true;
|
||||||
|
|
||||||
/* check if the stream is (already/still) connected */
|
/* check if the stream is (already/still) connected */
|
||||||
|
|
||||||
WaitStream();
|
WaitStream();
|
||||||
|
Loading…
Reference in New Issue
Block a user