2 * Copyright (C) 2005-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.
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"
21 class CDecoderFilterManager
;
25 class CWinSystemAndroid
: public CWinSystemBase
, public ITimerCallback
29 ~CWinSystemAndroid() override
;
31 bool InitWindowSystem() override
;
32 bool DestroyWindowSystem() override
;
34 bool CreateNewWindow(const std::string
& name
,
36 RESOLUTION_INFO
& res
) override
;
38 bool DestroyWindow() override
;
39 void UpdateResolutions() override
;
41 void InitiateModeChange();
42 bool IsHdmiModeTriggered() const { return m_HdmiModeTriggered
; }
43 void SetHdmiState(bool connected
);
45 void UpdateDisplayModes();
47 bool HasCursor() override
{ return false; }
49 bool Minimize() override
;
51 bool Show(bool raise
= true) override
;
52 void Register(IDispResource
*resource
) override
;
53 void Unregister(IDispResource
*resource
) override
;
55 void MessagePush(XBMC_Event
*newEvent
);
58 bool MessagePump() override
;
59 bool IsHDRDisplay() override
;
61 CHDRCapabilities
GetDisplayHDRCapabilities() const override
;
62 float GetGuiSdrPeakLuminance() const override
;
65 std::unique_ptr
<KODI::WINDOWING::IOSScreenSaver
> GetOSScreenSaverImpl() override
;
66 void OnTimeout() override
;
68 CAndroidUtils
*m_android
;
70 EGLDisplay m_nativeDisplay
= EGL_NO_DISPLAY
;
71 std::shared_ptr
<CNativeWindow
> m_nativeWindow
;
76 RENDER_STEREO_MODE m_stereo_mode
;
78 CTimer
*m_dispResetTimer
;
80 CCriticalSection m_resourceSection
;
81 std::vector
<IDispResource
*> m_resources
;
82 CDecoderFilterManager
*m_decoderFilterManager
;
85 bool m_HdmiModeTriggered
= false;
86 void UpdateResolutions(bool bUpdateDesktopRes
);