File indexing completed on 2024-12-01 13:40:41

0001 /*
0002     SPDX-FileCopyrightText: 2018 Nicolas Fella <nicolas.fella@gmx.de>
0003 
0004     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0005 */
0006 
0007 #include "canberracontext.h"
0008 
0009 namespace QPulseAudio
0010 {
0011 CanberraContext *CanberraContext::s_context = nullptr;
0012 
0013 CanberraContext *CanberraContext::instance()
0014 {
0015     if (!s_context) {
0016         s_context = new CanberraContext;
0017     }
0018     return s_context;
0019 }
0020 
0021 CanberraContext::CanberraContext(QObject *parent)
0022     : QObject(parent)
0023 {
0024     ca_context_create(&m_canberra);
0025 }
0026 
0027 CanberraContext::~CanberraContext()
0028 {
0029     if (m_canberra) {
0030         ca_context_destroy(m_canberra);
0031     }
0032 }
0033 
0034 ca_context *CanberraContext::canberra()
0035 {
0036     return m_canberra;
0037 }
0038 
0039 void CanberraContext::ref()
0040 {
0041     ++m_references;
0042 }
0043 
0044 void CanberraContext::unref()
0045 {
0046     if (--m_references == 0) {
0047         delete this;
0048         s_context = nullptr;
0049     }
0050 }
0051 }