Fix driver IPC usage
This commit is contained in:
parent
7b70aac358
commit
a54782c4e3
|
|
@ -273,20 +273,27 @@ void BreezyDesktopEffect::deactivate()
|
||||||
void BreezyDesktopEffect::enableDriver()
|
void BreezyDesktopEffect::enableDriver()
|
||||||
{
|
{
|
||||||
qCCritical(KWIN_XR) << "\t\t\tBreezy - enableDriver";
|
qCCritical(KWIN_XR) << "\t\t\tBreezy - enableDriver";
|
||||||
QJsonObject obj;
|
QJsonObject newConfig = QJsonObject();
|
||||||
obj.insert(QStringLiteral("disabled"), false);
|
auto configJsonOpt = XRDriverIPC::instance().retrieveConfig();
|
||||||
obj.insert(QStringLiteral("output_mode"), QStringLiteral("external_only"));
|
if (configJsonOpt) {
|
||||||
obj.insert(QStringLiteral("external_mode"), QStringLiteral("breezy_desktop"));
|
newConfig = configJsonOpt.value();
|
||||||
XRDriverIPC::instance().writeConfig(obj);
|
}
|
||||||
|
newConfig.insert(QStringLiteral("disabled"), false);
|
||||||
|
newConfig.insert(QStringLiteral("output_mode"), QStringLiteral("external_only"));
|
||||||
|
newConfig.insert(QStringLiteral("external_mode"), QStringLiteral("breezy_desktop"));
|
||||||
|
XRDriverIPC::instance().writeConfig(newConfig);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BreezyDesktopEffect::disableDriver()
|
void BreezyDesktopEffect::disableDriver()
|
||||||
{
|
{
|
||||||
qCCritical(KWIN_XR) << "\t\t\tBreezy - disableDriver";
|
qCCritical(KWIN_XR) << "\t\t\tBreezy - disableDriver";
|
||||||
QJsonObject obj;
|
QJsonObject newConfig = QJsonObject();
|
||||||
obj.insert(QStringLiteral("disabled"), true);
|
auto configJsonOpt = XRDriverIPC::instance().retrieveConfig();
|
||||||
obj.insert(QStringLiteral("external_mode"), QStringLiteral("none"));
|
if (configJsonOpt) {
|
||||||
XRDriverIPC::instance().writeConfig(obj);
|
newConfig = configJsonOpt.value();
|
||||||
|
}
|
||||||
|
newConfig.insert(QStringLiteral("external_mode"), QStringLiteral("none"));
|
||||||
|
XRDriverIPC::instance().writeConfig(newConfig);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BreezyDesktopEffect::addVirtualDisplay(QSize size)
|
void BreezyDesktopEffect::addVirtualDisplay(QSize size)
|
||||||
|
|
|
||||||
|
|
@ -242,24 +242,43 @@ void BreezyDesktopEffectConfig::updateUnmanagedState()
|
||||||
|
|
||||||
void BreezyDesktopEffectConfig::updateDriverEnabled()
|
void BreezyDesktopEffectConfig::updateDriverEnabled()
|
||||||
{
|
{
|
||||||
QJsonObject obj;
|
if (driverEnabled() == ui.kcfg_EffectEnabled->isChecked()) {
|
||||||
if (ui.kcfg_EffectEnabled->isChecked()) {
|
return;
|
||||||
obj.insert(QStringLiteral("disabled"), false);
|
|
||||||
obj.insert(QStringLiteral("output_mode"), QStringLiteral("external_only"));
|
|
||||||
obj.insert(QStringLiteral("external_mode"), QStringLiteral("breezy_desktop"));
|
|
||||||
} else {
|
|
||||||
obj.insert(QStringLiteral("disabled"), true);
|
|
||||||
obj.insert(QStringLiteral("external_mode"), QStringLiteral("none"));
|
|
||||||
}
|
}
|
||||||
XRDriverIPC::instance().writeConfig(obj);
|
|
||||||
|
QJsonObject newConfig = QJsonObject();
|
||||||
|
auto configJsonOpt = XRDriverIPC::instance().retrieveConfig();
|
||||||
|
if (configJsonOpt) {
|
||||||
|
newConfig = configJsonOpt.value();
|
||||||
|
}
|
||||||
|
if (ui.kcfg_EffectEnabled->isChecked()) {
|
||||||
|
newConfig.insert(QStringLiteral("disabled"), false);
|
||||||
|
newConfig.insert(QStringLiteral("output_mode"), QStringLiteral("external_only"));
|
||||||
|
newConfig.insert(QStringLiteral("external_mode"), QStringLiteral("breezy_desktop"));
|
||||||
|
} else {
|
||||||
|
newConfig.insert(QStringLiteral("external_mode"), QStringLiteral("none"));
|
||||||
|
}
|
||||||
|
XRDriverIPC::instance().writeConfig(newConfig);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool BreezyDesktopEffectConfig::driverEnabled()
|
||||||
|
{
|
||||||
|
auto configJsonOpt = XRDriverIPC::instance().retrieveConfig();
|
||||||
|
if (!configJsonOpt) return false;
|
||||||
|
auto configJson = configJsonOpt.value();
|
||||||
|
bool driverDisabled = configJson.value(QStringLiteral("disabled")).toBool();
|
||||||
|
QString driverOutputMode = configJson.value(QStringLiteral("output_mode")).toString();
|
||||||
|
QJsonArray driverExternalMode = configJson.value(QStringLiteral("external_mode")).toArray();
|
||||||
|
return !driverDisabled &&
|
||||||
|
driverOutputMode == QStringLiteral("external_only") &&
|
||||||
|
driverExternalMode.contains(QJsonValue(QStringLiteral("breezy_desktop")));
|
||||||
}
|
}
|
||||||
|
|
||||||
void BreezyDesktopEffectConfig::pollDriverState()
|
void BreezyDesktopEffectConfig::pollDriverState()
|
||||||
{
|
{
|
||||||
auto &bridge = XRDriverIPC::instance();
|
auto &bridge = XRDriverIPC::instance();
|
||||||
auto stateJsonOpt = bridge.retrieveDriverState();
|
auto stateJsonOpt = bridge.retrieveDriverState();
|
||||||
auto configJsonOpt = bridge.retrieveConfig();
|
if (!stateJsonOpt) return;
|
||||||
if (!stateJsonOpt || !configJsonOpt) return;
|
|
||||||
auto stateJson = stateJsonOpt.value();
|
auto stateJson = stateJsonOpt.value();
|
||||||
m_connectedDeviceBrand = stateJson.value(QStringLiteral("connected_device_brand")).toString();
|
m_connectedDeviceBrand = stateJson.value(QStringLiteral("connected_device_brand")).toString();
|
||||||
m_connectedDeviceModel = stateJson.value(QStringLiteral("connected_device_model")).toString();
|
m_connectedDeviceModel = stateJson.value(QStringLiteral("connected_device_model")).toString();
|
||||||
|
|
@ -272,13 +291,7 @@ void BreezyDesktopEffectConfig::pollDriverState()
|
||||||
QStringLiteral("No device connected"));
|
QStringLiteral("No device connected"));
|
||||||
}
|
}
|
||||||
|
|
||||||
auto configJson = configJsonOpt.value();
|
bool effectEnabled = driverEnabled();
|
||||||
bool driverDisabled = configJson.value(QStringLiteral("disabled")).toBool();
|
|
||||||
QString driverOutputMode = configJson.value(QStringLiteral("output_mode")).toString();
|
|
||||||
QJsonArray driverExternalMode = configJson.value(QStringLiteral("external_mode")).toArray();
|
|
||||||
bool effectEnabled = !driverDisabled &&
|
|
||||||
driverOutputMode == QStringLiteral("external_only") &&
|
|
||||||
driverExternalMode.contains(QJsonValue(QStringLiteral("breezy_desktop")));
|
|
||||||
if (ui.kcfg_EffectEnabled->isChecked() != effectEnabled) ui.kcfg_EffectEnabled->setChecked(effectEnabled);
|
if (ui.kcfg_EffectEnabled->isChecked() != effectEnabled) ui.kcfg_EffectEnabled->setChecked(effectEnabled);
|
||||||
|
|
||||||
refreshLicenseUi(stateJson);
|
refreshLicenseUi(stateJson);
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,7 @@ private:
|
||||||
void updateUiFromDefaultConfig();
|
void updateUiFromDefaultConfig();
|
||||||
void updateConfigFromUi();
|
void updateConfigFromUi();
|
||||||
void updateUnmanagedState();
|
void updateUnmanagedState();
|
||||||
|
bool driverEnabled();
|
||||||
void pollDriverState();
|
void pollDriverState();
|
||||||
void refreshLicenseUi(const QJsonObject &rootObj);
|
void refreshLicenseUi(const QJsonObject &rootObj);
|
||||||
void showStatus(QLabel *label, bool success, const QString &message);
|
void showStatus(QLabel *label, bool success, const QString &message);
|
||||||
|
|
|
||||||
|
|
@ -68,7 +68,7 @@ QByteArray XRDriverIPC::invokePython(const QString &method,
|
||||||
}
|
}
|
||||||
|
|
||||||
std::optional<QJsonObject> XRDriverIPC::retrieveConfig() {
|
std::optional<QJsonObject> XRDriverIPC::retrieveConfig() {
|
||||||
QByteArray out = invokePython(QStringLiteral("retrieve_config"), {}, QStringLiteral("1"));
|
QByteArray out = invokePython(QStringLiteral("retrieve_config"), {}, QStringLiteral("0"));
|
||||||
if (out.isEmpty()) return std::nullopt;
|
if (out.isEmpty()) return std::nullopt;
|
||||||
QJsonParseError err; auto doc = QJsonDocument::fromJson(out, &err);
|
QJsonParseError err; auto doc = QJsonDocument::fromJson(out, &err);
|
||||||
if (err.error != QJsonParseError::NoError || !doc.isObject()) return std::nullopt;
|
if (err.error != QJsonParseError::NoError || !doc.isObject()) return std::nullopt;
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
Subproject commit 69d3603ef9c931a0f66777279501d4c6dfe20f09
|
Subproject commit 09c6627d2a60985a4f8dde86be70d0e797d62f45
|
||||||
Loading…
Reference in New Issue