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 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 
63 protected:
64  std::unique_ptr<KODI::WINDOWING::IOSScreenSaver> GetOSScreenSaverImpl() override;
65  void OnTimeout() override;
66 
67  CAndroidUtils *m_android;
68 
69  EGLDisplay m_nativeDisplay = EGL_NO_DISPLAY;
70  std::shared_ptr<CNativeWindow> m_nativeWindow;
71 
72  int m_displayWidth;
73  int m_displayHeight;
74 
75  RENDER_STEREO_MODE m_stereo_mode;
76 
77  CTimer *m_dispResetTimer;
78 
79  CCriticalSection m_resourceSection;
80  std::vector<IDispResource*> m_resources;
81  CDecoderFilterManager *m_decoderFilterManager;
82 
83 private:
84  bool m_HdmiModeTriggered = false;
85  void UpdateResolutions(bool bUpdateDesktopRes);
86 };
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:114
Definition: HDRCapabilities.h:11
Definition: Timer.h:17