kodi
PipewireProxy.h
1 /*
2  * Copyright (C) 2010-2021 Team Kodi
3  * This file is part of Kodi - https://kodi.tv
4  *
5  * SPDX-License-Identifier: GPL-2.0-or-later
6  * See LICENSES/README.md for more information.
7  */
8 
9 #pragma once
10 
11 #include <memory>
12 
13 #include <pipewire/core.h>
14 
15 namespace KODI
16 {
17 namespace PIPEWIRE
18 {
19 
20 class CPipewireRegistry;
21 
23 {
24 public:
25  CPipewireProxy() = delete;
26  virtual ~CPipewireProxy();
27 
28  CPipewireRegistry& GetRegistry() const { return m_registry; }
29 
30 protected:
31  explicit CPipewireProxy(CPipewireRegistry& registry,
32  uint32_t id,
33  const char* type,
34  uint32_t version);
35 
37  {
38  void operator()(pw_proxy* p) { pw_proxy_destroy(p); }
39  };
40 
41  std::unique_ptr<pw_proxy, PipewireProxyDeleter> m_proxy;
42 
43 private:
44  static void Bound(void* userdata, uint32_t id);
45  static void Removed(void* userdata);
46 
47  static pw_proxy_events CreateProxyEvents();
48 
49  CPipewireRegistry& m_registry;
50 
51  const pw_proxy_events m_proxyEvents;
52 
53  spa_hook m_proxyListener;
54 };
55 
56 } // namespace PIPEWIRE
57 } // namespace KODI
Definition: PipewireRegistry.h:25
Definition: PipewireProxy.h:22
Definition: AudioDecoder.h:18