xbmc
OSScreenSaver.h
1 /*
2  * Copyright (C) 2017-2018 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 #include <utility>
13 
14 namespace KODI
15 {
16 namespace WINDOWING
17 {
18 
19 class COSScreenSaverManager;
20 
32 {
33 public:
34  COSScreenSaverInhibitor() noexcept;
36  COSScreenSaverInhibitor& operator=(COSScreenSaverInhibitor&& other) noexcept;
37  ~COSScreenSaverInhibitor() noexcept;
38  void Release();
39  bool IsActive() const;
40  operator bool() const;
41 
42 private:
43  friend class COSScreenSaverManager;
45  bool m_active;
46  COSScreenSaverManager* m_manager;
47 
48  COSScreenSaverInhibitor(COSScreenSaverInhibitor const& other) = delete;
49  COSScreenSaverInhibitor& operator=(COSScreenSaverInhibitor const& other) = delete;
50 };
51 
56 {
57 public:
58  virtual ~IOSScreenSaver() = default;
65  virtual void Inhibit() = 0;
72  virtual void Uninhibit() = 0;
73 };
74 
79 {
80 public:
81  void Inhibit() override {}
82  void Uninhibit() override {}
83 };
84 
93 {
94 public:
98  explicit COSScreenSaverManager(std::unique_ptr<IOSScreenSaver> impl);
103  COSScreenSaverInhibitor CreateInhibitor();
107  bool IsInhibited();
108 
109 private:
110  friend class COSScreenSaverInhibitor;
111  void RemoveInhibitor();
112 
113  unsigned int m_inhibitionCount{0u};
114  std::unique_ptr<IOSScreenSaver> m_impl;
115 };
116 
117 }
118 }
void Inhibit() override
Do not allow the OS screen saver to become active.
Definition: OSScreenSaver.h:81
Inhibit the OS screen saver as long as this object is alive.
Definition: OSScreenSaver.h:31
Dummy implementation of IOSScreenSaver.
Definition: OSScreenSaver.h:78
Controller configuration window.
Definition: AudioDecoder.h:18
Manage the OS screen saver.
Definition: OSScreenSaver.h:92
Interface for OS screen saver control implementations.
Definition: OSScreenSaver.h:55
void Uninhibit() override
Allow the OS screen saver to become active again.
Definition: OSScreenSaver.h:82