mirror of
https://github.com/moonlight-stream/moonlight-qt.git
synced 2026-02-16 02:30:52 +00:00
79 lines
2.7 KiB
C++
79 lines
2.7 KiB
C++
#pragma once
|
|
|
|
#include <QObject>
|
|
#include <QRect>
|
|
|
|
#include "SDL_compat.h"
|
|
|
|
class SystemProperties : public QObject
|
|
{
|
|
Q_OBJECT
|
|
|
|
friend class SystemPropertyQueryThread;
|
|
|
|
public:
|
|
SystemProperties();
|
|
~SystemProperties();
|
|
|
|
// Static properties queried synchronously during the constructor
|
|
Q_PROPERTY(bool isRunningWayland MEMBER isRunningWayland CONSTANT)
|
|
Q_PROPERTY(bool isRunningXWayland MEMBER isRunningXWayland CONSTANT)
|
|
Q_PROPERTY(bool isWow64 MEMBER isWow64 CONSTANT)
|
|
Q_PROPERTY(QString friendlyNativeArchName MEMBER friendlyNativeArchName CONSTANT)
|
|
Q_PROPERTY(bool hasDesktopEnvironment MEMBER hasDesktopEnvironment CONSTANT)
|
|
Q_PROPERTY(bool hasBrowser MEMBER hasBrowser CONSTANT)
|
|
Q_PROPERTY(bool hasDiscordIntegration MEMBER hasDiscordIntegration CONSTANT)
|
|
Q_PROPERTY(bool usesMaterial3Theme MEMBER usesMaterial3Theme CONSTANT)
|
|
Q_PROPERTY(QString versionString MEMBER versionString CONSTANT)
|
|
|
|
// Properties queried asynchronously
|
|
Q_PROPERTY(bool hasHardwareAcceleration MEMBER hasHardwareAcceleration NOTIFY hasHardwareAccelerationChanged)
|
|
Q_PROPERTY(bool rendererAlwaysFullScreen MEMBER rendererAlwaysFullScreen NOTIFY rendererAlwaysFullScreenChanged)
|
|
Q_PROPERTY(QString unmappedGamepads MEMBER unmappedGamepads NOTIFY unmappedGamepadsChanged)
|
|
Q_PROPERTY(QSize maximumResolution MEMBER maximumResolution NOTIFY maximumResolutionChanged)
|
|
Q_PROPERTY(bool supportsHdr MEMBER supportsHdr NOTIFY supportsHdrChanged)
|
|
|
|
Q_INVOKABLE void refreshDisplays();
|
|
Q_INVOKABLE QRect getNativeResolution(int displayIndex);
|
|
Q_INVOKABLE QRect getSafeAreaResolution(int displayIndex);
|
|
Q_INVOKABLE int getRefreshRate(int displayIndex);
|
|
|
|
signals:
|
|
void unmappedGamepadsChanged();
|
|
void hasHardwareAccelerationChanged();
|
|
void rendererAlwaysFullScreenChanged();
|
|
void maximumResolutionChanged();
|
|
void supportsHdrChanged();
|
|
|
|
private slots:
|
|
void updateDecoderProperties(bool hasHardwareAcceleration, bool rendererAlwaysFullScreen, QSize maximumResolution, bool supportsHdr);
|
|
|
|
private:
|
|
QThread* systemPropertyQueryThread;
|
|
SDL_Window* testWindow;
|
|
|
|
// Properties set by the constructor
|
|
bool isRunningWayland;
|
|
bool isRunningXWayland;
|
|
bool isWow64;
|
|
QString friendlyNativeArchName;
|
|
bool hasDesktopEnvironment;
|
|
bool hasBrowser;
|
|
bool hasDiscordIntegration;
|
|
QString unmappedGamepads;
|
|
QString versionString;
|
|
bool usesMaterial3Theme;
|
|
|
|
// Properties set by updateDecoderProperties()
|
|
bool hasHardwareAcceleration;
|
|
bool rendererAlwaysFullScreen;
|
|
QSize maximumResolution;
|
|
bool supportsHdr;
|
|
|
|
// Properties set by refreshDisplays()
|
|
QList<QRect> monitorNativeResolutions;
|
|
QList<QRect> monitorSafeAreaResolutions;
|
|
QList<int> monitorRefreshRates;
|
|
};
|
|
|