xbmc
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 Hide() override;
50  bool Show(bool raise = true) override;
51  void Register(IDispResource *resource) override;
52  void Unregister(IDispResource *resource) override;
53 
54  void MessagePush(XBMC_Event *newEvent);
55 
56  // winevents override
57  bool MessagePump() override;
58  bool IsHDRDisplay() override;
59 
60  CHDRCapabilities GetDisplayHDRCapabilities() const override;
61 
62 protected:
63  std::unique_ptr<KODI::WINDOWING::IOSScreenSaver> GetOSScreenSaverImpl() override;
64  void OnTimeout() override;
65 
66  CAndroidUtils *m_android;
67 
68  EGLDisplay m_nativeDisplay = EGL_NO_DISPLAY;
69  std::shared_ptr<CNativeWindow> m_nativeWindow;
70 
71  int m_displayWidth;
72  int m_displayHeight;
73 
74  RENDER_STEREO_MODE m_stereo_mode;
75 
76  CTimer *m_dispResetTimer;
77 
78  CCriticalSection m_resourceSection;
79  std::vector<IDispResource*> m_resources;
80  CDecoderFilterManager *m_decoderFilterManager;
81 
82 private:
83  bool m_HdmiModeTriggered = false;
84  void UpdateResolutions(bool bUpdateDesktopRes);
85 };
Class which handles multiple CDecoderFilter elements.
Definition: DecoderFilterManager.h:109
Definition: WinSystemAndroid.h:25
Definition: WinSystem.h:44
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:109
Definition: HDRCapabilities.h:11
Definition: Timer.h:17