fix: guard pw timer & stream for null
This commit is contained in:
parent
36aac876cc
commit
a2a63977c1
1 changed files with 13 additions and 0 deletions
|
|
@ -30,6 +30,12 @@ PipeWireWorker::PipeWireWorker(std::stop_token token, AudioCollector* collector)
|
||||||
|
|
||||||
timespec timeout = { 0, 10 * SPA_NSEC_PER_MSEC };
|
timespec timeout = { 0, 10 * SPA_NSEC_PER_MSEC };
|
||||||
m_timer = pw_loop_add_timer(pw_main_loop_get_loop(m_loop), handleTimeout, this);
|
m_timer = pw_loop_add_timer(pw_main_loop_get_loop(m_loop), handleTimeout, this);
|
||||||
|
if (!m_timer) {
|
||||||
|
qWarning() << "PipeWireWorker::init: failed to create timer";
|
||||||
|
pw_main_loop_destroy(m_loop);
|
||||||
|
pw_deinit();
|
||||||
|
return;
|
||||||
|
}
|
||||||
pw_loop_update_timer(pw_main_loop_get_loop(m_loop), m_timer, &timeout, &timeout, false);
|
pw_loop_update_timer(pw_main_loop_get_loop(m_loop), m_timer, &timeout, &timeout, false);
|
||||||
|
|
||||||
auto props = pw_properties_new(
|
auto props = pw_properties_new(
|
||||||
|
|
@ -55,6 +61,7 @@ PipeWireWorker::PipeWireWorker(std::stop_token token, AudioCollector* collector)
|
||||||
params[0] = spa_format_audio_raw_build(&b, SPA_PARAM_EnumFormat, &info);
|
params[0] = spa_format_audio_raw_build(&b, SPA_PARAM_EnumFormat, &info);
|
||||||
|
|
||||||
pw_stream_events events{};
|
pw_stream_events events{};
|
||||||
|
events.version = PW_VERSION_STREAM_EVENTS;
|
||||||
events.state_changed = [](void* data, pw_stream_state, pw_stream_state state, const char*) {
|
events.state_changed = [](void* data, pw_stream_state, pw_stream_state state, const char*) {
|
||||||
auto* self = static_cast<PipeWireWorker*>(data);
|
auto* self = static_cast<PipeWireWorker*>(data);
|
||||||
self->streamStateChanged(state);
|
self->streamStateChanged(state);
|
||||||
|
|
@ -65,6 +72,12 @@ PipeWireWorker::PipeWireWorker(std::stop_token token, AudioCollector* collector)
|
||||||
};
|
};
|
||||||
|
|
||||||
m_stream = pw_stream_new_simple(pw_main_loop_get_loop(m_loop), "caelestia-shell", props, &events, this);
|
m_stream = pw_stream_new_simple(pw_main_loop_get_loop(m_loop), "caelestia-shell", props, &events, this);
|
||||||
|
if (!m_stream) {
|
||||||
|
qWarning() << "PipeWireWorker::init: failed to create stream";
|
||||||
|
pw_main_loop_destroy(m_loop);
|
||||||
|
pw_deinit();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const int success = pw_stream_connect(m_stream, PW_DIRECTION_INPUT, PW_ID_ANY,
|
const int success = pw_stream_connect(m_stream, PW_DIRECTION_INPUT, PW_ID_ANY,
|
||||||
static_cast<pw_stream_flags>(
|
static_cast<pw_stream_flags>(
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue