Display capture still buggy with multiple displays, of which one disconnected
Operating System Info
Windows 10
Other OS
No response
OBS Studio Version
29.0.1
OBS Studio Version (Other)
No response
OBS Studio Log URL
https://obsproject.com/logs/mF9BQdaOGBkhy8Bd
OBS Studio Crash Log URL
No response
Expected Behavior
Scenario 1: With OBS open, after disabling the main monitor (windows+P -> "second screen only"), expecting to find that my display capture is able to change between all 3 of the remaining monitors on my 4 monitor setup.
Scenario 2: With OBS closed and without opening OBS once since Windows 10 started, disabling the main monitor THEN opening OBS, checking that everything is fine with the display capture in this case, then reactivating the monitor and expecting the display capture to change between all 4 monitors and on both capture methods ("Automatic" and "Windows 10 (1903 and up)")
Current Behavior
Scenario 1: With OBS open, after disabling the main monitor (windows+P -> "second screen only"), the display capture will correctly show 3 options, but selecting 2 of them will result in the same monitor being captured, effectively preventing to capture one of the remaining 3 monitors. The one monitor that is different from them (an LG ultrawide) is unaffected by this, whereas the 2 monitors, being the same model perhaps, seem to conflict.
Once this behavior is triggered, the only fix seems to restart windows 10 and only disable the main monitor before booting OBS for the first time.
Scenario 2: When the main monitor is disabled before opening OBS for the first time, if then this monitor is enabled again, the display capture will correctly be able to switch between all 4 monitors but that previously disabled main monitor will only work with the "Windows 10 (1903 and up)" option.
Steps to Reproduce
SCENARIO 1:
- Have 3? 4? monitors plugged in
- (Optional?) Have 2? 3? of the monitors being the same model, thus having the same exact name in the dropdown display capture menu
- Open OBS
- Disable the main monitor
- Create a Display Capture source or open an existing one
- Try to select the remaining monitors in the dropdown menu
SCENARIO 2:
- Have 3? 4? monitors plugged in
- (Optional?) Have 2? 3? of the monitors being the same model, thus having the same exact name in the dropdown display capture menu
- Disable the main monitor before having ever opened OBS in that Windows session
- Open OBS
- Enable the monitor that was just disabled
- Create a Display Capture source or open an existing one
- Select the just re-enabled monitor in the dropdown menu
- Try to select anything other than "Windows 10 (1903 and up)" as its Capture Method
Anything else we should know?
After Scenario 1 presents itself, closing and reopening OBS does not fix the issue.
I have 4 monitors, 3 of which are the roughly same brand and model (ASUS VG278). Sometimes I need to disable the main monitor while streaming so that I can switch from windows to my retro videogame consoles/upscalers. I then make use of a display capture when wanting to show a Chrome tab or something.
This kind of bug did not exist in OBS 28 as you probably know, and isn't fully fixed with 29.0.1, although it does seem to behave differently from when I tried it with 29.0.0.
Let me know if I can provide any more information!
I'm going to leave this open for a bit just in case anyone is going to take a look, but as far as the project is concerned, we don't consider hotplugging displays while OBS is open a supported scenario in any capacity. Windows treats this as a very destructive event, and the amount of handling we'd need to add makes it not worth the effort for something that shouldn't be happening in the first place.
However, if there's some kind of issue with enumeration still that is causing the same display to be shown twice, then that is a privacy concern that I care slightly more about, but have similar reservations on being something we can actually reasonably fix.
If you could, grab the x64 build at the bottom of this page and make new logs. There are no fixes, it just logs the display ids more thoroughly to help us try to understand what's happening. https://github.com/obsproject/obs-studio/actions/runs/4093017168
Hey jpark37, I should be able to try that on Monday, thanks!
And hey Fenrir, thanks for replying; yes there's an issue where the same display is shown twice in the enumeration but indeed only after a hot plug or hot unplug.
If you could, grab the x64 build at the bottom of this page and make new logs. There are no fixes, it just logs the display ids more thoroughly to help us try to understand what's happening. https://github.com/obsproject/obs-studio/actions/runs/4093017168
Here are the new logs: Scenario 1: https://obsproject.com/logs/dINgrph9jt5oD2u3 Scenario 2: https://obsproject.com/logs/uLcHOJQWmw0mdh5E
I don't know if it helps but the build you attached seems to be from 29.0.0 and not 29.0.1
Thanks for looking into this, have a great day
Each monitor has a unique id, so the problem isn't what I was expecting.
The build is after 29.0.1. The version number for dev builds is auto-generated by logic that can be a bit quirky.
@Goatistream Are you able to reproduce this issue without hot plugging/unplugging displays while OBS is running?
I have the same problem as OP described: 2 AOC 2590G4 in use and 1 LG TV via HDMI plugged in but disconnected in Windows.
Logs: https://obsproject.com/logs/rJ5vvh0oDlH26DdW
Revisiting this with more context, this now sounds like a different manifestation of the behavior described in #8181. Disabled displays (or displays connected, but not active according to Windows) mess with the way we identify displays with unique IDs (via the Windows API).
As said before, we don't consider hot plugging/unplugging devices while OBS is running a supported scenario, so we are unlikely to address specific issues that require that action to reproduce. However, we are still looking into the general issue of disabled displays causing issues with our display enumeration.
This can probably be closed as a duplicate of #8181, where we will focus on issues related to displays that are disabled before OBS starts.
Duplicate of #8181