[Windows] Fix driver version detection of AMD RDNA+ GPU on Windows 10
[xbmc.git] / xbmc / windowing / OSScreenSaver.cpp
blob3651314f8a0d1453b8c9954fe9def1b62e5f9dce
1 /*
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.
7 */
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");
27 m_impl->Inhibit();
29 return inhibitor;
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
43 m_impl->Uninhibit();
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
65 Release();
66 m_active = other.m_active;
67 m_manager = other.m_manager;
68 other.m_active = false;
69 other.m_manager = nullptr;
70 return *this;
73 bool COSScreenSaverInhibitor::IsActive() const
75 return m_active;
78 COSScreenSaverInhibitor::operator bool() const
80 return IsActive();
83 void COSScreenSaverInhibitor::Release()
85 if (m_active)
87 m_manager->RemoveInhibitor();
88 m_active = false;
92 COSScreenSaverInhibitor::~COSScreenSaverInhibitor() noexcept
94 Release();