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 "windowing/WinSystem.h" 17 18 class CDecoderFilterManager; 19 class IDispResource; 20 21 class CWinSystemAndroid : public CWinSystemBase, public ITimerCallback 22 { 23 public: 24 CWinSystemAndroid(); 25 ~CWinSystemAndroid() override; 26 27 bool InitWindowSystem() override; 28 bool DestroyWindowSystem() override; 29 30 bool CreateNewWindow(const std::string& name, 31 bool fullScreen, 32 RESOLUTION_INFO& res) override; 33 34 bool DestroyWindow() override; 35 void UpdateResolutions() override; 36 37 void InitiateModeChange(); IsHdmiModeTriggered()38 bool IsHdmiModeTriggered() const { return m_HdmiModeTriggered; }; 39 void SetHdmiState(bool connected); 40 41 void UpdateDisplayModes(); 42 HasCursor()43 bool HasCursor() override { return false; }; 44 45 bool Hide() override; 46 bool Show(bool raise = true) override; 47 void Register(IDispResource *resource) override; 48 void Unregister(IDispResource *resource) override; 49 50 void MessagePush(XBMC_Event *newEvent); 51 52 // winevents override 53 bool MessagePump() override; 54 bool IsHDRDisplay() override; 55 56 protected: 57 std::unique_ptr<KODI::WINDOWING::IOSScreenSaver> GetOSScreenSaverImpl() override; 58 void OnTimeout() override; 59 60 CAndroidUtils *m_android; 61 62 EGLDisplay m_nativeDisplay; 63 EGLNativeWindowType m_nativeWindow; 64 65 int m_displayWidth; 66 int m_displayHeight; 67 68 RENDER_STEREO_MODE m_stereo_mode; 69 70 CTimer *m_dispResetTimer; 71 72 CCriticalSection m_resourceSection; 73 std::vector<IDispResource*> m_resources; 74 CDecoderFilterManager *m_decoderFilterManager; 75 76 private: 77 bool m_HdmiModeTriggered = false; 78 void UpdateResolutions(bool bUpdateDesktopRes); 79 }; 80