ValveSoftware / Dota-2

Tracker for issues specific to Linux and Mac in the Reborn client. If you have a general issue or non-system-specific feature request please go to dev.dota2.com
470 stars 38 forks source link

[LINUX] Reborn Starts up on wrong monitor #13

Closed Disk1of5 closed 8 years ago

Disk1of5 commented 9 years ago

It seems that Dota 2 - Reborn doesn't use the main monitor initially, original Dota 2 works correctly. I had to change to bordered window, move to the primary screen and then re-enable full screen. It would be nice to choose what display to use in a multi display setup.

My setup is mint 17.1 with Cinnamon as as my windows manager.

Disk1of5 commented 9 years ago

hey @gdrewb-valve what are the chances that if this is a SDL issue this bug is also related to https://github.com/ValveSoftware/steam-for-linux/issues/3520 where big picture also launches on the incorrect monitor?

gdrewb-valve commented 9 years ago

It's certainly possible given the similarity in the problem but it's hard to say with any certainty. If it turns out to be an SDL issue and gets fixed I can let the Steam team know, then they might update their SDL. That's down a long chain of "if's" so who knows what will happen.

gdrewb-valve commented 9 years ago

@SHOTbyGUN, I believe I have a fix for a minor part of the problem where going from DF fullscreen to windowed switches monitors. That will ship in a future update. That doesn't address the larger problem of starting on the wrong monitor, though.

SHOTbyGUN commented 9 years ago

@gdrewb-valve

OK, so the problem is not in monitor identification and location, that at least rules that out. If you use a plain non-fullscreen window that's smaller than your monitors, say 1280x720, does -sdl_displayindex 0 put the window on the right screen? Does -sdl_displayindex 1 have any effect in that case?

So I started to play in windowed mode "almost at the full screen resolution" and I noticed this behavior: Dota and Dota Reborn in windowed mode will start with launch parameters: -novid -w 1910 -h 1020 (primary monitor) -novid -w 1910 -h 1030 (secondary monitor) repeated test multiple times... the few pixels missing from height is the taskbar. eg. if window does not fit primary screen with taskbar, it gets thrown in secondary screen?!? regardless of what -sdl_displayindex is.

gdrewb-valve commented 9 years ago

Reborn doesn't make any checks for whether a window will fit, it just tries to center in the screen as given by sdl_displayindex. It's possible your window manager is overriding that (that's why I was asking about WM's before).

MaikuMori commented 9 years ago

I think there is somewhat related issue with chat wheel, each time I bring chat wheel up my mouse is moved to the right side. I think it's trying to reset my mouses coordinates to the center of the screen, but I have 2 monitors so it just "centers" my mouse to the right side of the left monitor where the game is.

I can make separate issue for this if needed.

gdrewb-valve commented 9 years ago

Issue #198 covers chat wheel issues but had been fixed. I'll reopen and you can comment there.

MaikuMori commented 9 years ago

I'm also getting the same problem where it starts on the wrong window (non-primary).

WM: Gnome 3.16.3 OS: Archlinux

msjyoo commented 9 years ago

I can also confirm that Reborn starts on wrong monitor (not-Reborn starts correctly). -sdl_displayindex also fails to work. Ubuntu GNOME 15.04, AMD graphics driver.

gdrewb-valve commented 9 years ago

@sekjun9878, what video mode are you running in? If you're running a borderless window at the desired monitor's resolution does it help to switch to desktop-friendly fullscreen?

gdrewb-valve commented 9 years ago

Also if you use a window smaller than your monitor(s) do things start on the right display and does -sdl_displayindex work to control which monitor is used?

msjyoo commented 9 years ago

@gdrewb-valve

msjyoo commented 9 years ago

@gdrewb-valve

Please let me know if there's anything more to test. Would love to get this fixed.

gdrewb-valve commented 9 years ago

We'll need to work with the SDL devs to try and see what's going on.

The behavior where a borderless window that's monitor-sized gets moved by the window manager is presumably by-design for the window manager and not something Reborn is doing. Assuming you want fullscreen-like behavior hoosing desktop-friendly fullscreen is the right video option, provided that we can find out why that uses the wrong monitor.

ase1590 commented 9 years ago

I can confirm, at least on the Cinnamon desktop environment, that it appears to be an issue with either cinnamon or its windows manager: Muffin

Windowed, the game will always go to the correct monitor.

Fullscreen/borderless/desktop-friendly will go to the wrong monitor.

HOWEVER, setting the cinnamon panel to auto-hide will allow Dota to start on the primary monitor in all modes. The same results happen when adding an additional panel to the secondary display and setting both panels to "always show".

@gdrewb-valve, As you mentioned earlier, this is likely a problem with the WM handling the game. It's curious however that the previous source 1 Dota didn't suffer from this.

Edit: as with others below "-sdl_displayindex 2" fixes the issue.

Disk1of5 commented 9 years ago

@gdrewb-valve I tweeted out to Ryan C. Gordon @rcgordon (on github) a few weeks ago a and he is aware of this bug has valve tried working with him to resolve this?

ase1590 commented 9 years ago

@Disk1of5 if you set your Cinnamon panel to auto-hide, does this correct the behavior?

Disk1of5 commented 9 years ago

@ase1590 doing that trick does startup full screen on the correct monitor.

SHOTbyGUN commented 9 years ago

I switched to debian and currenly using Xfce desktop environment with lightdm display manager. No dual monitor issues are present here... Also mousegrab works as intended.

This issue sounds like that SDL devs and Linux Mint devs have to solve this together. https://github.com/linuxmint/muffin

MaikuMori commented 9 years ago

I'm quite sure the issue is as follows:

You have two resolutions:

Then:

I think this is not really WM issue. How is it handled on Windows? You have auto-hiding/static start menu bar there too.

One way to fix it would be to:

Note the two separate steps. Probably works as long as you don't initialize the window with max resolution.

This should work because you can already do that using these steps:

You can't fix it in all the WMs and you can't tailor solution for every setup because titlebars and other elements can have any size and position. But most WMs have a way to switch windows to full-screen mode.

nullfoxh commented 9 years ago

I found a fix! I'm using Cinnamon on Arch. In launch options set -sdl_displayindex 2

CommanderAlchemy commented 9 years ago

@nullv0id have you even tried to read the comments?

nullfoxh commented 9 years ago

@CommanderAlchemy Yeah I have. They all suggest trying 0 (primary) or 1 (secondary), no mention of trying "2". Maybe you should take your own advice and "try to read the comments", or try what I'm suggesting or maybe even stop shitposting. Frankly I don't care.

No good deed goes unpunished indeed.

CommanderAlchemy commented 9 years ago

@nullv0id Then instead of getting mad you would see that the index number correlates to your monitor. I have 3 monitors and tried using from 0 and 1 ie (0-2, 1-3) and game would launch on same monitor no matter what. (0x0).

nullfoxh commented 9 years ago

@CommanderAlchemy Yes, the number obviously correlates to the monitor as I and many others already pointed out, but thanks for the reminder..? So it doesn't work for you, but it works for me and multiple people have said they tried 0 and 1, but not 2, so I suggested trying 2 since it worked for me.

Then you posted your useless reply while I was trying to help people out. I don't understand why you had to be a jerk in the first place nor do I really care. I was trying to actually contribute, but apparently you feel this place is better suited for shitposting.

msjyoo commented 9 years ago

Can confirm that -sdl_displayindex 2 works on a dual monitor setup, left monitor primary, Cinnamon Debian Jessie. Thanks @nullv0id!

MaikuMori commented 9 years ago

Yea using 2 works when using with 2 monitors. Seems like the index starts with 1 and not 0.

@CommanderAlchemy try using 3.

EDIT: I'm actually using Gnome 3, not Cinnamon.

YabosMcGee commented 9 years ago

I can also confirm that -sdl_displayindex 2 works. I'm using Fedora 21 with Gnome 3, two Dell 23" monitors connected with DP, on an Intel HD 4600.

ghost commented 9 years ago

Also confirming that "-sdl_displayindex 2" works for me on Linux Mint 17.2 with Cinnamon (2 monitors), thanks

ruliane commented 9 years ago

I tried -sdl_displayindex -1, 0, 1, 2, 3... but Reborn still launches on my left monitor, whereas my primary monitor is on the right. :( Running Mint 17.2 with MATE 1.10.2.

gdrewb-valve commented 9 years ago

I think it's time to split this issue as we have a few different things going on. For those of you where -sdl_displayindex 2 works and you only have two monitors can you try the SDL display info test?

sudo apt-get install libsdl2-dev wget https://hg.libsdl.org/SDL/raw-file/9f0a0c7de41a/test/testdisplayinfo.c gcc testdisplayinfo.c pkg-config --cflags --libs sdl2 ./a.out

Does it show two monitors or three? Hopefully it shows three and then this is an SDL problem with identifying monitors.

gdrewb-valve commented 9 years ago

For the cases where the window manager appears to be moving windows between monitors when they can't fit I have opened issue #556.

gdrewb-valve commented 9 years ago

I'll close this issue in favor of the more-specific issues once we have more-specific issues opened.

MaikuMori commented 9 years ago

So I'm one of those for whom -sdl_displayindex 2 parameter fixes the issue.

Here's the output from testdisplayinfo:

maiku  /  tmp  maiku  gcc testdisplayinfo.c $(pkg-config --cflags --libs sdl2)
maiku  /  tmp  maiku  ./a.out
INFO: Using video target 'x11'.
INFO: See 2 displays.
INFO: 0: "DELL U2410 24"" (1920x1200, (0, 0)), 12 modes.
INFO: CURRENT: fmt=SDL_PIXELFORMAT_RGB888 w=1920 h=1200 refresh=59
INFO: DESKTOP: fmt=SDL_PIXELFORMAT_RGB888 w=1920 h=1200 refresh=59
INFO:     MODE 0: fmt=SDL_PIXELFORMAT_RGB888 w=1920 h=1200 refresh=59
INFO:     MODE 1: fmt=SDL_PIXELFORMAT_RGB888 w=1600 h=1200 refresh=60
INFO:     MODE 2: fmt=SDL_PIXELFORMAT_RGB888 w=1280 h=1024 refresh=75
INFO:     MODE 3: fmt=SDL_PIXELFORMAT_RGB888 w=1280 h=1024 refresh=60
INFO:     MODE 4: fmt=SDL_PIXELFORMAT_RGB888 w=1152 h=864 refresh=75
INFO:     MODE 5: fmt=SDL_PIXELFORMAT_RGB888 w=1024 h=768 refresh=75
INFO:     MODE 6: fmt=SDL_PIXELFORMAT_RGB888 w=1024 h=768 refresh=60
INFO:     MODE 7: fmt=SDL_PIXELFORMAT_RGB888 w=800 h=600 refresh=75
INFO:     MODE 8: fmt=SDL_PIXELFORMAT_RGB888 w=800 h=600 refresh=60
INFO:     MODE 9: fmt=SDL_PIXELFORMAT_RGB888 w=720 h=400 refresh=70
INFO:     MODE 10: fmt=SDL_PIXELFORMAT_RGB888 w=640 h=480 refresh=75
INFO:     MODE 11: fmt=SDL_PIXELFORMAT_RGB888 w=640 h=480 refresh=60
INFO:
INFO: 1: "DELL U2410 24"" (1920x1200, (1920, 0)), 12 modes.
INFO: CURRENT: fmt=SDL_PIXELFORMAT_RGB888 w=1920 h=1200 refresh=59
INFO: DESKTOP: fmt=SDL_PIXELFORMAT_RGB888 w=1920 h=1200 refresh=59
INFO:     MODE 0: fmt=SDL_PIXELFORMAT_RGB888 w=1920 h=1200 refresh=59
INFO:     MODE 1: fmt=SDL_PIXELFORMAT_RGB888 w=1600 h=1200 refresh=60
INFO:     MODE 2: fmt=SDL_PIXELFORMAT_RGB888 w=1280 h=1024 refresh=75
INFO:     MODE 3: fmt=SDL_PIXELFORMAT_RGB888 w=1280 h=1024 refresh=60
INFO:     MODE 4: fmt=SDL_PIXELFORMAT_RGB888 w=1152 h=864 refresh=75
INFO:     MODE 5: fmt=SDL_PIXELFORMAT_RGB888 w=1024 h=768 refresh=75
INFO:     MODE 6: fmt=SDL_PIXELFORMAT_RGB888 w=1024 h=768 refresh=60
INFO:     MODE 7: fmt=SDL_PIXELFORMAT_RGB888 w=800 h=600 refresh=75
INFO:     MODE 8: fmt=SDL_PIXELFORMAT_RGB888 w=800 h=600 refresh=60
INFO:     MODE 9: fmt=SDL_PIXELFORMAT_RGB888 w=720 h=400 refresh=70
INFO:     MODE 10: fmt=SDL_PIXELFORMAT_RGB888 w=640 h=480 refresh=75
INFO:     MODE 11: fmt=SDL_PIXELFORMAT_RGB888 w=640 h=480 refresh=60
INFO:

Note: For those who also want to run the test the correct compile command is:

gcc testdisplayinfo.c $(pkg-config --cflags --libs sdl2)

For reference this is how my windows are aranged in Gnome 3:

screenshot from 2015-10-12 18-11-25 Primary display is on the left.

gdrewb-valve commented 9 years ago

@MaikuMori, that's even stranger as you only have two displays so display index 2 is invalid and SDL should just end up returning 0,0 for its position. In your case that should be the same as display index 0. What video mode and size are you using and on what monitor?

Also, can you force things to use the libSDL2-2.0.so.0 in the Reborn directory (if you weren't already) just to see if it's some difference in behavior between Reborn's copy of SDL and your system SDL.

MaikuMori commented 9 years ago

Unless I messed up something the output is the same with Reborns SDL:

maiku  /  tmp  maiku  env LD_LIBRARY_PATH=/home/maiku/.local/share/Steam/steamapps/common/dota\ 2\ beta/game/bin/linuxsteamrt64 ./a.out
INFO: Using video target 'x11'.
INFO: See 2 displays.
INFO: 0: "DELL U2410 24"" (1920x1200, (0, 0)), 12 modes.
INFO: CURRENT: fmt=SDL_PIXELFORMAT_RGB888 w=1920 h=1200 refresh=59
INFO: DESKTOP: fmt=SDL_PIXELFORMAT_RGB888 w=1920 h=1200 refresh=59
INFO:     MODE 0: fmt=SDL_PIXELFORMAT_RGB888 w=1920 h=1200 refresh=59
INFO:     MODE 1: fmt=SDL_PIXELFORMAT_RGB888 w=1600 h=1200 refresh=60
INFO:     MODE 2: fmt=SDL_PIXELFORMAT_RGB888 w=1280 h=1024 refresh=75
INFO:     MODE 3: fmt=SDL_PIXELFORMAT_RGB888 w=1280 h=1024 refresh=60
INFO:     MODE 4: fmt=SDL_PIXELFORMAT_RGB888 w=1152 h=864 refresh=75
INFO:     MODE 5: fmt=SDL_PIXELFORMAT_RGB888 w=1024 h=768 refresh=75
INFO:     MODE 6: fmt=SDL_PIXELFORMAT_RGB888 w=1024 h=768 refresh=60
INFO:     MODE 7: fmt=SDL_PIXELFORMAT_RGB888 w=800 h=600 refresh=75
INFO:     MODE 8: fmt=SDL_PIXELFORMAT_RGB888 w=800 h=600 refresh=60
INFO:     MODE 9: fmt=SDL_PIXELFORMAT_RGB888 w=720 h=400 refresh=70
INFO:     MODE 10: fmt=SDL_PIXELFORMAT_RGB888 w=640 h=480 refresh=75
INFO:     MODE 11: fmt=SDL_PIXELFORMAT_RGB888 w=640 h=480 refresh=60
INFO:
INFO: 1: "DELL U2410 24"" (1920x1200, (1920, 0)), 12 modes.
INFO: CURRENT: fmt=SDL_PIXELFORMAT_RGB888 w=1920 h=1200 refresh=59
INFO: DESKTOP: fmt=SDL_PIXELFORMAT_RGB888 w=1920 h=1200 refresh=59
INFO:     MODE 0: fmt=SDL_PIXELFORMAT_RGB888 w=1920 h=1200 refresh=59
INFO:     MODE 1: fmt=SDL_PIXELFORMAT_RGB888 w=1600 h=1200 refresh=60
INFO:     MODE 2: fmt=SDL_PIXELFORMAT_RGB888 w=1280 h=1024 refresh=75
INFO:     MODE 3: fmt=SDL_PIXELFORMAT_RGB888 w=1280 h=1024 refresh=60
INFO:     MODE 4: fmt=SDL_PIXELFORMAT_RGB888 w=1152 h=864 refresh=75
INFO:     MODE 5: fmt=SDL_PIXELFORMAT_RGB888 w=1024 h=768 refresh=75
INFO:     MODE 6: fmt=SDL_PIXELFORMAT_RGB888 w=1024 h=768 refresh=60
INFO:     MODE 7: fmt=SDL_PIXELFORMAT_RGB888 w=800 h=600 refresh=75
INFO:     MODE 8: fmt=SDL_PIXELFORMAT_RGB888 w=800 h=600 refresh=60
INFO:     MODE 9: fmt=SDL_PIXELFORMAT_RGB888 w=720 h=400 refresh=70
INFO:     MODE 10: fmt=SDL_PIXELFORMAT_RGB888 w=640 h=480 refresh=75
INFO:     MODE 11: fmt=SDL_PIXELFORMAT_RGB888 w=640 h=480 refresh=60
INFO:

maiku  /  tmp  maiku  env LD_LIBRARY_PATH=/home/maiku/.local/share/Steam/steamapps/common/dota\ 2\ beta/game/bin/linuxsteamrt64 ldd ./a.out
        linux-vdso.so.1 (0x00007fff04ffd000)
        libSDL2-2.0.so.0 => /home/maiku/.local/share/Steam/steamapps/common/dota 2 beta/game/bin/linuxsteamrt64/libSDL2-2.0.so.0 (0x00007fbb724ac000)
        libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007fbb7228f000)
        libc.so.6 => /usr/lib/libc.so.6 (0x00007fbb71eeb000)
        libm.so.6 => /usr/lib/libm.so.6 (0x00007fbb71bed000)
        libdl.so.2 => /usr/lib/libdl.so.2 (0x00007fbb719e9000)
        librt.so.1 => /usr/lib/librt.so.1 (0x00007fbb717e1000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fbb727af000)
gdrewb-valve commented 9 years ago

OK, thanks. Can you post what video mode and size are you using and on what monitor? You mentioned previously that it seems like the indices are off by one, can you post exactly what happens for indices 0, 1 and 2? How about 3, just to see what happens?

MaikuMori commented 9 years ago

Tried with different indexes:

So invalid index fixes the issue.

For reference these are my launch options: -novid -sdl_displayindex 2.

Using correct index (<2) gives me this option screen:

screenshot from 2015-10-12 19-26-00

And using incorrect index gives me this option screen:

screenshot from 2015-10-12 19-27-22

I hadn't noticed before that using incorrect index messes up the resolution selection, but it makes sense.

As side note there is some issue with window event loop while game is starting since I always get unresponsive application dialog when I start Dota 2. But that's another issue.

I think the issue is still that window manager is moving the window to screen which has enough space for full window. Setting incorrect index probably messes up the window manager and it fails to move the window.

gdrewb-valve commented 9 years ago

That does sound like #556, we'll see if other people that have -sdl_displayindex 2 report similar things.

YabosMcGee commented 9 years ago

@gdrewb-valve Just like @MaikuMori -sdl_displayindex 2 works for me, even though I only have two monitors. Here's my output as well:

INFO: Using video target 'x11'.
INFO: See 2 displays.
INFO: 0: "DELL UZ2315H 23"" (1920x1080, (0, 0)), 24 modes.
INFO: CURRENT: fmt=SDL_PIXELFORMAT_RGB888 w=1920 h=1080 refresh=60
INFO: DESKTOP: fmt=SDL_PIXELFORMAT_RGB888 w=1920 h=1080 refresh=60
INFO:     MODE 0: fmt=SDL_PIXELFORMAT_RGB888 w=1920 h=1080 refresh=60
INFO:     MODE 1: fmt=SDL_PIXELFORMAT_RGB888 w=1920 h=1080 refresh=59
INFO:     MODE 2: fmt=SDL_PIXELFORMAT_RGB888 w=1920 h=1080 refresh=50
INFO:     MODE 3: fmt=SDL_PIXELFORMAT_RGB888 w=1920 h=1080 refresh=30
INFO:     MODE 4: fmt=SDL_PIXELFORMAT_RGB888 w=1920 h=1080 refresh=29
INFO:     MODE 5: fmt=SDL_PIXELFORMAT_RGB888 w=1920 h=1080 refresh=25
INFO:     MODE 6: fmt=SDL_PIXELFORMAT_RGB888 w=1600 h=900 refresh=59
INFO:     MODE 7: fmt=SDL_PIXELFORMAT_RGB888 w=1280 h=1024 refresh=75
INFO:     MODE 8: fmt=SDL_PIXELFORMAT_RGB888 w=1280 h=1024 refresh=60
INFO:     MODE 9: fmt=SDL_PIXELFORMAT_RGB888 w=1280 h=720 refresh=60
INFO:     MODE 10: fmt=SDL_PIXELFORMAT_RGB888 w=1280 h=720 refresh=59
INFO:     MODE 11: fmt=SDL_PIXELFORMAT_RGB888 w=1280 h=720 refresh=50
INFO:     MODE 12: fmt=SDL_PIXELFORMAT_RGB888 w=1152 h=864 refresh=75
INFO:     MODE 13: fmt=SDL_PIXELFORMAT_RGB888 w=1024 h=768 refresh=75
INFO:     MODE 14: fmt=SDL_PIXELFORMAT_RGB888 w=1024 h=768 refresh=60
INFO:     MODE 15: fmt=SDL_PIXELFORMAT_RGB888 w=800 h=600 refresh=75
INFO:     MODE 16: fmt=SDL_PIXELFORMAT_RGB888 w=800 h=600 refresh=60
INFO:     MODE 17: fmt=SDL_PIXELFORMAT_RGB888 w=720 h=576 refresh=50
INFO:     MODE 18: fmt=SDL_PIXELFORMAT_RGB888 w=720 h=480 refresh=60
INFO:     MODE 19: fmt=SDL_PIXELFORMAT_RGB888 w=720 h=480 refresh=59
INFO:     MODE 20: fmt=SDL_PIXELFORMAT_RGB888 w=720 h=400 refresh=70
INFO:     MODE 21: fmt=SDL_PIXELFORMAT_RGB888 w=640 h=480 refresh=75
INFO:     MODE 22: fmt=SDL_PIXELFORMAT_RGB888 w=640 h=480 refresh=60
INFO:     MODE 23: fmt=SDL_PIXELFORMAT_RGB888 w=640 h=480 refresh=59
INFO: 
INFO: 1: "DELL UZ2315H 23"" (1920x1080, (1920, 0)), 24 modes.
INFO: CURRENT: fmt=SDL_PIXELFORMAT_RGB888 w=1920 h=1080 refresh=60
INFO: DESKTOP: fmt=SDL_PIXELFORMAT_RGB888 w=1920 h=1080 refresh=60
INFO:     MODE 0: fmt=SDL_PIXELFORMAT_RGB888 w=1920 h=1080 refresh=60
INFO:     MODE 1: fmt=SDL_PIXELFORMAT_RGB888 w=1920 h=1080 refresh=59
INFO:     MODE 2: fmt=SDL_PIXELFORMAT_RGB888 w=1920 h=1080 refresh=50
INFO:     MODE 3: fmt=SDL_PIXELFORMAT_RGB888 w=1920 h=1080 refresh=30
INFO:     MODE 4: fmt=SDL_PIXELFORMAT_RGB888 w=1920 h=1080 refresh=29
INFO:     MODE 5: fmt=SDL_PIXELFORMAT_RGB888 w=1920 h=1080 refresh=25
INFO:     MODE 6: fmt=SDL_PIXELFORMAT_RGB888 w=1600 h=900 refresh=59
INFO:     MODE 7: fmt=SDL_PIXELFORMAT_RGB888 w=1280 h=1024 refresh=75
INFO:     MODE 8: fmt=SDL_PIXELFORMAT_RGB888 w=1280 h=1024 refresh=60
INFO:     MODE 9: fmt=SDL_PIXELFORMAT_RGB888 w=1280 h=720 refresh=60
INFO:     MODE 10: fmt=SDL_PIXELFORMAT_RGB888 w=1280 h=720 refresh=59
INFO:     MODE 11: fmt=SDL_PIXELFORMAT_RGB888 w=1280 h=720 refresh=50
INFO:     MODE 12: fmt=SDL_PIXELFORMAT_RGB888 w=1152 h=864 refresh=75
INFO:     MODE 13: fmt=SDL_PIXELFORMAT_RGB888 w=1024 h=768 refresh=75
INFO:     MODE 14: fmt=SDL_PIXELFORMAT_RGB888 w=1024 h=768 refresh=60
INFO:     MODE 15: fmt=SDL_PIXELFORMAT_RGB888 w=800 h=600 refresh=75
INFO:     MODE 16: fmt=SDL_PIXELFORMAT_RGB888 w=800 h=600 refresh=60
INFO:     MODE 17: fmt=SDL_PIXELFORMAT_RGB888 w=720 h=576 refresh=50
INFO:     MODE 18: fmt=SDL_PIXELFORMAT_RGB888 w=720 h=480 refresh=60
INFO:     MODE 19: fmt=SDL_PIXELFORMAT_RGB888 w=720 h=480 refresh=59
INFO:     MODE 20: fmt=SDL_PIXELFORMAT_RGB888 w=720 h=400 refresh=70
INFO:     MODE 21: fmt=SDL_PIXELFORMAT_RGB888 w=640 h=480 refresh=75
INFO:     MODE 22: fmt=SDL_PIXELFORMAT_RGB888 w=640 h=480 refresh=60
INFO:     MODE 23: fmt=SDL_PIXELFORMAT_RGB888 w=640 h=480 refresh=59
gdrewb-valve commented 9 years ago

When the invalid index is used it ends up trying to put the window at negative coordinates (it's trying to center the window on the given display and there isn't one so its size is 0,0 and the centering will put the window center at 0,0 so the upper-left will be negative). When I try this on my Ubuntu / Unity system it ends up putting the window in the upper-left corner of my leftmost monitor, so my guess is that this is working as a way of tricking the window manager into doing the right thing for window positioning. That doesn't lend itself to a real fix, though, so it's not clear how to proceed on these cases. At least there's something that works, even if it works by black magic.

ruliane commented 9 years ago

As far as I understand, it only "works" if you want Reborn to launch on the leftmost monitor. Am I right ? In my case (2 monitors, the right one as main display), Reborn starts on the left monitor whatever the -sdl_displayindex supplied.

gdrewb-valve commented 9 years ago

Correct, my comment was only for the people where -sdl_displayindex 2 is helping.

gdrewb-valve commented 9 years ago

For others the important info is what video settings you're using: fullscreen, windowed, borderless, etc.; what resolution and what size of monitor it is. Also, try using a borderless window that's smaller than the monitor size. If that works you're probably one of the people affected by #556 where the window manager is not letting the window get created on the desired monitor.

MaikuMori commented 9 years ago

@gdrewb-valve To me it seems like both the problem and the fix is quite obvious:

The problem is window manager being too smart and moving the window. I'm actually thinking that the WM behaviour is correct even though unintuitive.

The fix is also quite simple as I mentioned earlier:

This works. I actually just now tried another game (Pillars of Eternity) and this is exactly how it goes into full-screen mode. You can see it starting windowed then half a second later it goes full-screen.

Also other applications like browser, terminal, Emacs all can go into full-screen mode on my primary screen without problems.

The issue is only evident if you attempt to create window bigger than available resolution without actually being full-screen which is what Dota does right away as it starts.

gdrewb-valve commented 9 years ago

Reborn uses SDL so the window creation work is inside of SDL. We've been talking to the SDL devs about this issue but changes would be up to them. Reborn could potentially try to work around SDL but it would be much more valuable to fix SDL so that all users of it benefit.

serianx commented 8 years ago

Same problem Here, I posted my results on thread #556 because the option -sdl_displayindex 2 doesn't help for me. What else can I do to help fix this?

serianx commented 8 years ago

also The option -fullscreen makes the game launch in the correct monitor but with extremely low framerate ~6fps so it's not really a workarround

msjyoo commented 8 years ago

@gdrewb-valve Using -sdl_displayindex 2 worked fine until now, but a since a few patches ago when I use that option, I get "No supported resolutions". It works perfectly fine, except I don't get a list of resolutions. This does not happen if I omit the launch option.

gdrewb-valve commented 8 years ago

That behavior is expected since 2 is not a valid display index for you so there's no way to retrieve monitor-supported resolutions.