2 * Copyright (C) 2010-2021 Team Kodi
3 * This file is part of Kodi - https://kodi.tv
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
9 #include "PipewireThreadLoop.h"
11 #include "utils/log.h"
16 using namespace PIPEWIRE
;
18 CPipewireThreadLoop::CPipewireThreadLoop()
20 m_mainloop
.reset(pw_thread_loop_new("pipewire", nullptr));
23 CLog::Log(LOGERROR
, "CPipewireThreadLoop: failed to create main loop: {}", strerror(errno
));
24 throw std::runtime_error("CPipewireThreadLoop: failed to create main loop");
28 bool CPipewireThreadLoop::Start()
30 return pw_thread_loop_start(m_mainloop
.get()) == 0;
33 void CPipewireThreadLoop::Stop()
35 pw_thread_loop_stop(m_mainloop
.get());
38 void CPipewireThreadLoop::Lock() const
40 pw_thread_loop_lock(m_mainloop
.get());
43 void CPipewireThreadLoop::Unlock() const
45 pw_thread_loop_unlock(m_mainloop
.get());
48 int CPipewireThreadLoop::Wait(std::chrono::nanoseconds timeout
)
51 pw_thread_loop_get_time(m_mainloop
.get(), &abstime
, timeout
.count());
53 return pw_thread_loop_timed_wait_full(m_mainloop
.get(), &abstime
);
56 void CPipewireThreadLoop::Signal(bool accept
)
58 pw_thread_loop_signal(m_mainloop
.get(), accept
);