Fix 2: Add displayIndex validation, specific TODO comment, and consolidate platform blocks
This commit is contained in:
parent
ce20ac7d8a
commit
ef91b5385d
1 changed files with 17 additions and 15 deletions
|
|
@ -107,8 +107,6 @@ void DragonRelayBackend::streamHost(const QString &ip, const QString &app, int d
|
||||||
// Delegate to moonlight-qt's existing stream launch mechanism.
|
// Delegate to moonlight-qt's existing stream launch mechanism.
|
||||||
// The standard Moonlight PC model uses ComputerManager; we invoke it
|
// The standard Moonlight PC model uses ComputerManager; we invoke it
|
||||||
// via a QProcess for now so we don't have to patch PC discovery internals.
|
// via a QProcess for now so we don't have to patch PC discovery internals.
|
||||||
// TODO: wire directly into Moonlight's ComputerManager once the fork is
|
|
||||||
// more deeply integrated.
|
|
||||||
|
|
||||||
qDebug() << "DragonRelayBackend::streamHost called with ip=" << ip
|
qDebug() << "DragonRelayBackend::streamHost called with ip=" << ip
|
||||||
<< "app=" << app << "displayIndex=" << displayIndex;
|
<< "app=" << app << "displayIndex=" << displayIndex;
|
||||||
|
|
@ -119,11 +117,6 @@ void DragonRelayBackend::streamHost(const QString &ip, const QString &app, int d
|
||||||
ip,
|
ip,
|
||||||
app
|
app
|
||||||
};
|
};
|
||||||
// TODO: map displayIndex to Moonlight --display flag or similar
|
|
||||||
// For now, log displayIndex and pass without flag
|
|
||||||
if (displayIndex > 0) {
|
|
||||||
qDebug() << "Display index" << displayIndex << "requested (Moonlight --display flag TODO)";
|
|
||||||
}
|
|
||||||
QProcess::startDetached(QStringLiteral("moonlight"), args);
|
QProcess::startDetached(QStringLiteral("moonlight"), args);
|
||||||
#elif defined(Q_OS_MACOS)
|
#elif defined(Q_OS_MACOS)
|
||||||
QStringList args{
|
QStringList args{
|
||||||
|
|
@ -131,10 +124,6 @@ void DragonRelayBackend::streamHost(const QString &ip, const QString &app, int d
|
||||||
ip,
|
ip,
|
||||||
app
|
app
|
||||||
};
|
};
|
||||||
// TODO: map displayIndex to Moonlight --display flag or similar
|
|
||||||
if (displayIndex > 0) {
|
|
||||||
qDebug() << "Display index" << displayIndex << "requested (Moonlight --display flag TODO)";
|
|
||||||
}
|
|
||||||
QProcess::startDetached(QStringLiteral("moonlight"), args);
|
QProcess::startDetached(QStringLiteral("moonlight"), args);
|
||||||
#else
|
#else
|
||||||
QStringList args{
|
QStringList args{
|
||||||
|
|
@ -142,12 +131,16 @@ void DragonRelayBackend::streamHost(const QString &ip, const QString &app, int d
|
||||||
ip,
|
ip,
|
||||||
app
|
app
|
||||||
};
|
};
|
||||||
// TODO: map displayIndex to Moonlight --display flag or similar
|
|
||||||
if (displayIndex > 0) {
|
|
||||||
qDebug() << "Display index" << displayIndex << "requested (Moonlight --display flag TODO)";
|
|
||||||
}
|
|
||||||
QProcess::startDetached(QStringLiteral("moonlight"), args);
|
QProcess::startDetached(QStringLiteral("moonlight"), args);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// TODO: Pass displayIndex to Moonlight stream command via the --display or
|
||||||
|
// --monitor flag. moonlight-qt uses NvHTTP::launchApp() with a "display"
|
||||||
|
// parameter. See app/streaming/session.cpp launchSession() for where
|
||||||
|
// display selection hooks should be added.
|
||||||
|
if (displayIndex > 0) {
|
||||||
|
qDebug() << " display index:" << displayIndex << "(Moonlight --display wiring pending)";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ── displaysForHost ───────────────────────────────────────────────────────────
|
// ── displaysForHost ───────────────────────────────────────────────────────────
|
||||||
|
|
@ -160,6 +153,15 @@ QVariantList DragonRelayBackend::displaysForHost(const QString &hostIP) const {
|
||||||
|
|
||||||
void DragonRelayBackend::streamHostDisplay(const QString &hostIP, int displayIndex) {
|
void DragonRelayBackend::streamHostDisplay(const QString &hostIP, int displayIndex) {
|
||||||
qDebug() << "Streaming host" << hostIP << "display index" << displayIndex;
|
qDebug() << "Streaming host" << hostIP << "display index" << displayIndex;
|
||||||
|
|
||||||
|
// Add displayIndex validation near the top of streamHost()
|
||||||
|
const QVariantList displays = displaysForHost(hostIP);
|
||||||
|
if (displayIndex < 0 || (!displays.isEmpty() && displayIndex >= displays.size())) {
|
||||||
|
qWarning() << "DragonRelayBackend: displayIndex" << displayIndex
|
||||||
|
<< "out of bounds for host" << hostIP << "(has" << displays.size() << "displays)";
|
||||||
|
displayIndex = 0; // fall back to primary
|
||||||
|
}
|
||||||
|
|
||||||
// Pass displayIndex to streamHost
|
// Pass displayIndex to streamHost
|
||||||
streamHost(hostIP, QStringLiteral("Desktop"), displayIndex);
|
streamHost(hostIP, QStringLiteral("Desktop"), displayIndex);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue