Don't skip disconnected X11 outputs (#1071)

This commit is contained in:
luk1337 2023-03-28 22:44:32 +02:00 committed by GitHub
parent 44f1984af0
commit 1ab1b7920e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 24 additions and 10 deletions

View File

@ -299,13 +299,18 @@ output_name
.. Tip:: To find the name of the appropriate values follow these instructions.
**Linux**
.. code-block:: bash
During Sunshine startup, you should see the list of detected monitors:
xrandr --listmonitors
.. code-block:: text
Example output: ``0: +HDMI-1 1920/518x1200/324+0+0 HDMI-1``
Info: Detecting connected monitors
Info: Detected monitor 0: DVI-D-0, connected: false
Info: Detected monitor 1: HDMI-0, connected: true
Info: Detected monitor 2: DP-0, connected: true
Info: Detected monitor 3: DP-1, connected: false
Info: Detected monitor 4: DVI-D-1, connected: false
You need to use the value before the colon in the output, e.g. ``0``.
You need to use the value before the colon in the output, e.g. ``1``.
.. Todo:: macOS

View File

@ -427,7 +427,7 @@ namespace platf {
int monitor = 0;
for (int x = 0; x < output; ++x) {
output_info_t out_info { x11::rr::GetOutputInfo(xdisplay.get(), screenr.get(), screenr->outputs[x]) };
if (out_info && out_info->connection == RR_Connected) {
if (out_info) {
if (monitor++ == streamedMonitor) {
result = std::move(out_info);
break;
@ -761,7 +761,7 @@ namespace platf {
return {};
}
BOOST_LOG(info) << "Detecting connected monitors"sv;
BOOST_LOG(info) << "Detecting monitors"sv;
x11::xdisplay_t xdisplay { x11::OpenDisplay(nullptr) };
if (!xdisplay) {
@ -775,7 +775,8 @@ namespace platf {
int monitor = 0;
for (int x = 0; x < output; ++x) {
output_info_t out_info { x11::rr::GetOutputInfo(xdisplay.get(), screenr.get(), screenr->outputs[x]) };
if (out_info && out_info->connection == RR_Connected) {
if (out_info) {
BOOST_LOG(info) << "Detected monitor "sv << monitor << ": "sv << out_info->name << ", connected: "sv << (out_info->connection == RR_Connected);
++monitor;
}
}

View File

@ -560,9 +560,17 @@
v-model="config.output_name"
/>
<div class="form-text">
xrandr --listmonitors<br />
Example output:
<pre> 0: +HDMI-1 1920/518x1200/324+0+0 HDMI-1</pre>
During Sunshine startup, you should see the list of detected monitors, e.g.:<br />
<br />
<pre style="white-space: pre-line;">
Info: Detecting connected monitors
Info: Detected monitor 0: DVI-D-0, connected: false
Info: Detected monitor 1: HDMI-0, connected: true
Info: Detected monitor 2: DP-0, connected: true
Info: Detected monitor 3: DP-1, connected: false
Info: Detected monitor 4: DVI-D-1, connected: false
</pre>
You need to use the value before the colon in the output, e.g. <b>1</b>.
</div>
</div>
</div>