Kodi Docs 20.0
Kodi is an open source media player and entertainment hub.
CWinSystemBase Class Referenceabstract

#include <WinSystem.h>

Inheritance diagram for CWinSystemBase:
CWinSystemAndroid CWinSystemIOS CWinSystemOSX CWinSystemTVOS CWinSystemWin10 CWinSystemWin32 KODI::WINDOWING::GBM::CWinSystemGbm KODI::WINDOWING::WAYLAND::CWinSystemWayland KODI::WINDOWING::X11::CWinSystemX11

Public Member Functions

 CWinSystemBase ()
 
virtual ~CWinSystemBase ()
 
virtual CRenderSystemBaseGetRenderSystem ()
 
virtual const std::string GetName ()
 
virtual bool InitWindowSystem ()
 
virtual bool DestroyWindowSystem ()
 
virtual bool CreateNewWindow (const std::string &name, bool fullScreen, RESOLUTION_INFO &res)=0
 
virtual bool DestroyWindow ()
 
virtual bool ResizeWindow (int newWidth, int newHeight, int newLeft, int newTop)=0
 
virtual bool SetFullScreen (bool fullScreen, RESOLUTION_INFO &res, bool blankOtherDisplays)=0
 
virtual bool DisplayHardwareScalingEnabled ()
 
virtual void UpdateDisplayHardwareScaling (const RESOLUTION_INFO &resInfo)
 
virtual bool MoveWindow (int topLeft, int topRight)
 
virtual void FinishModeChange (RESOLUTION res)
 
virtual void FinishWindowResize (int newWidth, int newHeight)
 
virtual bool CenterWindow ()
 
virtual bool IsCreated ()
 
virtual void NotifyAppFocusChange (bool bGaining)
 
virtual void NotifyAppActiveChange (bool bActivated)
 
virtual void ShowOSMouse (bool show)
 
virtual bool HasCursor ()
 
virtual bool HasInertialGestures ()
 
virtual bool UseLimitedColor ()
 
virtual int NoOfBuffers ()
 
virtual float GetDisplayLatency ()
 
virtual float GetFrameLatencyAdjustment ()
 
virtual bool Minimize ()
 
virtual bool Restore ()
 
virtual bool Hide ()
 
virtual bool Show (bool raise=true)
 
virtual std::unique_ptr< CVideoSyncGetVideoSync (void *clock)
 
virtual void OnMove (int x, int y)
 
KODI::WINDOWING::COSScreenSaverManagerGetOSScreenSaver ()
 
unsigned int GetWidth ()
 
unsigned int GetHeight ()
 
virtual bool CanDoWindowed ()
 
bool IsFullScreen ()
 
virtual void UpdateResolutions ()
 
void SetWindowResolution (int width, int height)
 
std::vector< RESOLUTION_WHRScreenResolutions (float refreshrate)
 
std::vector< REFRESHRATERefreshRates (int width, int height, uint32_t dwFlags)
 
REFRESHRATE DefaultRefreshRate (std::vector< REFRESHRATE > rates)
 
virtual bool HasCalibration (const RESOLUTION_INFO &resInfo)
 
virtual std::string GetClipboardText (void)
 
virtual void Register (IDispResource *resource)=0
 
virtual void Unregister (IDispResource *resource)=0
 
void RegisterRenderLoop (IRenderLoop *client)
 
void UnregisterRenderLoop (IRenderLoop *client)
 
void DriveRenderLoop ()
 
virtual bool MessagePump ()
 
CGraphicContextGetGfxContext ()
 
virtual voidGetHWContext ()
 
std::shared_ptr< CDPMSSupportGetDPMSManager ()
 
virtual bool SetHDR (const VideoPicture *videoPicture)
 
virtual bool IsHDRDisplay ()
 
virtual HDR_STATUS ToggleHDR ()
 
virtual HDR_STATUS GetOSHDRStatus ()
 
virtual CHDRCapabilities GetDisplayHDRCapabilities () const
 
virtual DEBUG_INFO_RENDER GetDebugInfo ()
 
virtual std::vector< std::string > GetConnectedOutputs ()
 

Static Public Member Functions

static std::unique_ptr< CWinSystemBaseCreateWinSystem ()
 

Static Public Attributes

static const char * SETTING_WINSYSTEM_IS_HDR_DISPLAY = "winsystem.ishdrdisplay"
 

Protected Member Functions

void UpdateDesktopResolution (RESOLUTION_INFO &newRes, const std::string &output, int width, int height, float refreshRate, uint32_t dwFlags)
 
virtual std::unique_ptr< KODI::WINDOWING::IOSScreenSaverGetOSScreenSaverImpl ()
 

Protected Attributes

int m_nWidth = 0
 
int m_nHeight = 0
 
int m_nTop = 0
 
int m_nLeft = 0
 
bool m_bWindowCreated = false
 
bool m_bFullScreen = false
 
bool m_bBlankOtherDisplay = false
 
float m_fRefreshRate = 0.0f
 
std::unique_ptr< KODI::WINDOWING::COSScreenSaverManagerm_screenSaverManager
 
CCriticalSection m_renderLoopSection
 
std::vector< IRenderLoop * > m_renderLoopClients
 
std::unique_ptr< IWinEventsm_winEvents
 
std::unique_ptr< CGraphicContextm_gfxContext
 
std::shared_ptr< CDPMSSupportm_dpms
 

Constructor & Destructor Documentation

◆ CWinSystemBase()

CWinSystemBase::CWinSystemBase ( )

◆ ~CWinSystemBase()

CWinSystemBase::~CWinSystemBase ( )
virtualdefault

Member Function Documentation

◆ CanDoWindowed()

virtual bool CWinSystemBase::CanDoWindowed ( )
inlinevirtual

◆ CenterWindow()

virtual bool CWinSystemBase::CenterWindow ( )
inlinevirtual

Reimplemented in CWinSystemWin32.

◆ CreateNewWindow()

◆ CreateWinSystem()

static std::unique_ptr< CWinSystemBase > CWinSystemBase::CreateWinSystem ( )
static

◆ DefaultRefreshRate()

REFRESHRATE CWinSystemBase::DefaultRefreshRate ( std::vector< REFRESHRATE rates)

◆ DestroyWindow()

◆ DestroyWindowSystem()

◆ DisplayHardwareScalingEnabled()

virtual bool CWinSystemBase::DisplayHardwareScalingEnabled ( )
inlinevirtual

◆ DriveRenderLoop()

void CWinSystemBase::DriveRenderLoop ( )

◆ FinishModeChange()

virtual void CWinSystemBase::FinishModeChange ( RESOLUTION  res)
inlinevirtual

◆ FinishWindowResize()

◆ GetClipboardText()

std::string CWinSystemBase::GetClipboardText ( void  )
virtual

◆ GetConnectedOutputs()

virtual std::vector< std::string > CWinSystemBase::GetConnectedOutputs ( )
inlinevirtual

◆ GetDebugInfo()

virtual DEBUG_INFO_RENDER CWinSystemBase::GetDebugInfo ( )
inlinevirtual

Reimplemented in CWinSystemWin10DX, and CWinSystemWin32DX.

◆ GetDisplayHDRCapabilities()

virtual CHDRCapabilities CWinSystemBase::GetDisplayHDRCapabilities ( ) const
inlinevirtual

Reimplemented in CWinSystemAndroid.

◆ GetDisplayLatency()

virtual float CWinSystemBase::GetDisplayLatency ( )
inlinevirtual

Get average display latency

The latency should be measured as the time between finishing the rendering of a frame, i.e. calling PresentRender, and the rendered content becoming visible on the screen.

Returns
average display latency in seconds, or negative value if unknown

Reimplemented in KODI::WINDOWING::WAYLAND::CWinSystemWayland.

◆ GetDPMSManager()

std::shared_ptr< CDPMSSupport > CWinSystemBase::GetDPMSManager ( )

◆ GetFrameLatencyAdjustment()

virtual float CWinSystemBase::GetFrameLatencyAdjustment ( )
inlinevirtual

Get time that should be subtracted from the display latency for this frame in milliseconds

Contrary to GetDisplayLatency, this value is calculated ad-hoc for the frame currently being rendered and not a value that is calculated/ averaged from past frames and their presentation times

Reimplemented in CWinSystemAndroidGLESContext, KODI::WINDOWING::WAYLAND::CWinSystemWayland, and KODI::WINDOWING::X11::CWinSystemX11GLContext.

◆ GetGfxContext()

CGraphicContext & CWinSystemBase::GetGfxContext ( )

◆ GetHeight()

unsigned int CWinSystemBase::GetHeight ( )
inline

◆ GetHWContext()

virtual void * CWinSystemBase::GetHWContext ( )
inlinevirtual

Get OS specific hardware context

Returns
OS specific context or nullptr if OS not have
Note
This function is currently only related to Windows with DirectX, all other OS where use GL returns nullptr. Returned Windows class pointer is ID3D11DeviceContext1.

Reimplemented in CWinSystemWin10DX, and CWinSystemWin32DX.

◆ GetName()

virtual const std::string CWinSystemBase::GetName ( )
inlinevirtual

◆ GetOSHDRStatus()

virtual HDR_STATUS CWinSystemBase::GetOSHDRStatus ( )
inlinevirtual

Reimplemented in CWinSystemWin10DX, and CWinSystemWin32DX.

◆ GetOSScreenSaver()

KODI::WINDOWING::COSScreenSaverManager * CWinSystemBase::GetOSScreenSaver ( )

Get OS screen saver inhibit implementation if available

Returns
OS screen saver implementation that can be used with this windowing system or nullptr if unsupported. Lifetime of the returned object will usually end with DestroyWindowSystem, so do not use any more after calling that.

◆ GetOSScreenSaverImpl()

virtual std::unique_ptr< KODI::WINDOWING::IOSScreenSaver > CWinSystemBase::GetOSScreenSaverImpl ( )
inlineprotectedvirtual

◆ GetRenderSystem()

◆ GetVideoSync()

◆ GetWidth()

unsigned int CWinSystemBase::GetWidth ( )
inline

◆ HasCalibration()

virtual bool CWinSystemBase::HasCalibration ( const RESOLUTION_INFO resInfo)
inlinevirtual

◆ HasCursor()

virtual bool CWinSystemBase::HasCursor ( )
inlinevirtual

◆ HasInertialGestures()

virtual bool CWinSystemBase::HasInertialGestures ( )
inlinevirtual

Reimplemented in CWinSystemWin10, and CWinSystemWin32.

◆ Hide()

◆ InitWindowSystem()

◆ IsCreated()

virtual bool CWinSystemBase::IsCreated ( )
inlinevirtual

◆ IsFullScreen()

bool CWinSystemBase::IsFullScreen ( )
inline

◆ IsHDRDisplay()

virtual bool CWinSystemBase::IsHDRDisplay ( )
inlinevirtual

◆ MessagePump()

◆ Minimize()

◆ MoveWindow()

virtual bool CWinSystemBase::MoveWindow ( int  topLeft,
int  topRight 
)
inlinevirtual

◆ NoOfBuffers()

int CWinSystemBase::NoOfBuffers ( void  )
virtual

◆ NotifyAppActiveChange()

virtual void CWinSystemBase::NotifyAppActiveChange ( bool  bActivated)
inlinevirtual

◆ NotifyAppFocusChange()

virtual void CWinSystemBase::NotifyAppFocusChange ( bool  bGaining)
inlinevirtual

◆ OnMove()

virtual void CWinSystemBase::OnMove ( int  x,
int  y 
)
inlinevirtual

◆ RefreshRates()

std::vector< REFRESHRATE > CWinSystemBase::RefreshRates ( int  width,
int  height,
uint32_t  dwFlags 
)

◆ Register()

◆ RegisterRenderLoop()

void CWinSystemBase::RegisterRenderLoop ( IRenderLoop client)

◆ ResizeWindow()

◆ Restore()

virtual bool CWinSystemBase::Restore ( )
inlinevirtual

◆ ScreenResolutions()

std::vector< RESOLUTION_WHR > CWinSystemBase::ScreenResolutions ( float  refreshrate)

◆ SetFullScreen()

◆ SetHDR()

virtual bool CWinSystemBase::SetHDR ( const VideoPicture videoPicture)
inlinevirtual

Reimplemented in CWinSystemAndroidGLESContext.

◆ SetWindowResolution()

void CWinSystemBase::SetWindowResolution ( int  width,
int  height 
)

◆ Show()

◆ ShowOSMouse()

◆ ToggleHDR()

virtual HDR_STATUS CWinSystemBase::ToggleHDR ( )
inlinevirtual

Reimplemented in CWinSystemWin10DX, and CWinSystemWin32DX.

◆ Unregister()

◆ UnregisterRenderLoop()

void CWinSystemBase::UnregisterRenderLoop ( IRenderLoop client)

◆ UpdateDesktopResolution()

void CWinSystemBase::UpdateDesktopResolution ( RESOLUTION_INFO newRes,
const std::string &  output,
int  width,
int  height,
float  refreshRate,
uint32_t  dwFlags 
)
protected

◆ UpdateDisplayHardwareScaling()

virtual void CWinSystemBase::UpdateDisplayHardwareScaling ( const RESOLUTION_INFO resInfo)
inlinevirtual

◆ UpdateResolutions()

◆ UseLimitedColor()

Member Data Documentation

◆ m_bBlankOtherDisplay

bool CWinSystemBase::m_bBlankOtherDisplay = false
protected

◆ m_bFullScreen

bool CWinSystemBase::m_bFullScreen = false
protected

◆ m_bWindowCreated

bool CWinSystemBase::m_bWindowCreated = false
protected

◆ m_dpms

std::shared_ptr<CDPMSSupport> CWinSystemBase::m_dpms
protected

◆ m_fRefreshRate

float CWinSystemBase::m_fRefreshRate = 0.0f
protected

◆ m_gfxContext

std::unique_ptr<CGraphicContext> CWinSystemBase::m_gfxContext
protected

◆ m_nHeight

int CWinSystemBase::m_nHeight = 0
protected

◆ m_nLeft

int CWinSystemBase::m_nLeft = 0
protected

◆ m_nTop

int CWinSystemBase::m_nTop = 0
protected

◆ m_nWidth

int CWinSystemBase::m_nWidth = 0
protected

◆ m_renderLoopClients

std::vector<IRenderLoop*> CWinSystemBase::m_renderLoopClients
protected

◆ m_renderLoopSection

CCriticalSection CWinSystemBase::m_renderLoopSection
protected

◆ m_screenSaverManager

std::unique_ptr<KODI::WINDOWING::COSScreenSaverManager> CWinSystemBase::m_screenSaverManager
protected

◆ m_winEvents

std::unique_ptr<IWinEvents> CWinSystemBase::m_winEvents
protected

◆ SETTING_WINSYSTEM_IS_HDR_DISPLAY

const char * CWinSystemBase::SETTING_WINSYSTEM_IS_HDR_DISPLAY = "winsystem.ishdrdisplay"
static

The documentation for this class was generated from the following files: