kodi
WinSystemAndroid.h
1 /*
2  * Copyright (C) 2005-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 "AndroidUtils.h"
12 #include "rendering/gles/RenderSystemGLES.h"
13 #include "system_egl.h"
14 #include "threads/CriticalSection.h"
15 #include "threads/Timer.h"
16 #include "utils/HDRCapabilities.h"
17 #include "windowing/WinSystem.h"
18 
19 #include <memory>
20 
22 class IDispResource;
23 class CNativeWindow;
24 
26 {
27 public:
29  ~CWinSystemAndroid() override;
30 
31  bool InitWindowSystem() override;
32  bool DestroyWindowSystem() override;
33 
34  bool CreateNewWindow(const std::string& name,
35  bool fullScreen,
36  RESOLUTION_INFO& res) override;
37 
38  bool DestroyWindow() override;
39  void UpdateResolutions() override;
40 
41  void InitiateModeChange();
42  bool IsHdmiModeTriggered() const { return m_HdmiModeTriggered; }
43  void SetHdmiState(bool connected);
44 
45  void UpdateDisplayModes();
46 
47  bool HasCursor() override { return false; }
48 
49  bool Minimize() override;
50  bool Hide() override;
51  bool Show(bool raise = true) override;
52  void Register(IDispResource *resource) override;
53  void Unregister(IDispResource *resource) override;
54 
55  void MessagePush(XBMC_Event *newEvent);
56 
57  // winevents override
58  bool MessagePump() override;
59  bool IsHDRDisplay() override;
60 
61  CHDRCapabilities GetDisplayHDRCapabilities() const override;
62  float GetGuiSdrPeakLuminance() const override;
63 
64 protected:
65  std::unique_ptr<KODI::WINDOWING::IOSScreenSaver> GetOSScreenSaverImpl() override;
66  void OnTimeout() override;
67 
68  CAndroidUtils *m_android;
69 
70  EGLDisplay m_nativeDisplay = EGL_NO_DISPLAY;
71  std::shared_ptr<CNativeWindow> m_nativeWindow;
72 
73  int m_displayWidth;
74  int m_displayHeight;
75 
76  RENDER_STEREO_MODE m_stereo_mode;
77 
78  CTimer *m_dispResetTimer;
79 
80  CCriticalSection m_resourceSection;
81  std::vector<IDispResource*> m_resources;
82  CDecoderFilterManager *m_decoderFilterManager;
83 
84 private:
85  bool m_HdmiModeTriggered = false;
86  void UpdateResolutions(bool bUpdateDesktopRes);
87 };
Class which handles multiple CDecoderFilter elements.
Definition: DecoderFilterManager.h:112
Definition: WinSystemAndroid.h:25
Definition: WinSystem.h:49
Definition: AndroidUtils.h:20
Definition: XBMCApp.h:61
Definition: Timer.h:25
Definition: DispResource.h:14
Provide info of a resolution.
Definition: Resolution.h:66
Definition: XBMC_events.h:117
Definition: HDRCapabilities.h:11
Definition: Timer.h:17