3#include <libremidi/backends/linux/pipewire/context.hpp>
12using SharedPipewireContext = std::shared_ptr<libremidi::pipewire::context>;
26inline SharedPipewireContext acquireSharedContext(
const char* who)
noexcept
28 using connection_state = libremidi::pipewire::connection_state;
30 auto ctx = libremidi::pipewire::shared_context();
34 if(ctx->state() == connection_state::broken)
36 if(ctx.use_count() == 1)
43 <<
": shared PipeWire connection is flagged broken but is "
45 << (ctx.use_count() - 1)
46 <<
"other client(s) with live streams on it; reusing it "
47 "instead of tearing it down";
51 if(!ctx->ok() && !(ctx->pw_core_ptr() && ctx->thread_loop_handle()))