2 * Copyright (C) 2017-2018 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 "OSScreenSaver.h"
11 #include "utils/log.h"
13 using namespace KODI::WINDOWING
;
15 COSScreenSaverManager::COSScreenSaverManager(std::unique_ptr
<IOSScreenSaver
> impl
)
16 : m_impl
{std::move(impl
)}
20 COSScreenSaverInhibitor
COSScreenSaverManager::CreateInhibitor()
22 COSScreenSaverInhibitor inhibitor
{this};
23 if (m_inhibitionCount
++ == 0)
25 // Inhibit if this was first inhibitor
26 CLog::Log(LOGDEBUG
, "Inhibiting OS screen saver");
32 bool COSScreenSaverManager::IsInhibited()
34 return (m_inhibitionCount
> 0);
37 void COSScreenSaverManager::RemoveInhibitor()
39 if (--m_inhibitionCount
== 0)
41 CLog::Log(LOGDEBUG
, "Uninhibiting OS screen saver");
42 // Uninhibit if this was last inhibitor
47 COSScreenSaverInhibitor::COSScreenSaverInhibitor() noexcept
48 : m_active
{false}, m_manager
{}
52 COSScreenSaverInhibitor::COSScreenSaverInhibitor(COSScreenSaverManager
* manager
)
53 : m_active
{true}, m_manager
{manager
}
57 COSScreenSaverInhibitor::COSScreenSaverInhibitor(COSScreenSaverInhibitor
&& other
) noexcept
58 : m_active
{false}, m_manager
{}
60 *this = std::move(other
);
63 COSScreenSaverInhibitor
& COSScreenSaverInhibitor::operator=(COSScreenSaverInhibitor
&& other
) noexcept
66 m_active
= other
.m_active
;
67 m_manager
= other
.m_manager
;
68 other
.m_active
= false;
69 other
.m_manager
= nullptr;
73 bool COSScreenSaverInhibitor::IsActive() const
78 COSScreenSaverInhibitor::operator bool() const
83 void COSScreenSaverInhibitor::Release()
87 m_manager
->RemoveInhibitor();
92 COSScreenSaverInhibitor::~COSScreenSaverInhibitor() noexcept