View Issue Details

IDProjectCategoryView StatusLast Update
0004529Spring engineGeneralpublic2014-09-11 22:42
ReporterJools Assigned Toabma  
PrioritynormalSeverityminorReproducibilityalways
Status resolvedResolutionno change required 
Product Version97.0.1+git 
Summary0004529: Spring opens in secondary monitor
DescriptionSpring always opens in secondary monitor, ie one without the taskbar and system tray showing. Only way to get it to the primary monitor is to enable windowed mode while in game, then send that window over to primary monitor, and then re-enable fullscreen mode. This has to be repeated each time the game is started and it breaks some visuals that do not rescale to new resolution.

Other windows programs do not behave this way, they generally remember in which window they opened into last time, or you can make them do that.
Steps To ReproduceStart spring with dual monitors enabled
Additional InformationTested with Spring 97-360.
TagsNo tags attached.
Attached Files
infolog.txt (Attachment missing)
infolog_368.txt (Attachment missing)
Checked infolog.txt for Errors

Activities

Jools

2014-09-03 14:43

reporter   ~0013588

Even if this is maybe not directly caused by the spring engine, it is still an issue that in my opinion blocks the new engine release. People would just prefer the older one instead of this issue. And issue doesn't happen in spring 96 because it handles fullscreen differently.

Jools

2014-09-03 14:52

reporter   ~0013589

See also: http://stackoverflow.com/questions/52755/what-determines-the-monitor-my-app-runs-on

abma

2014-09-05 00:43

administrator   ~0013596

Last edited: 2014-09-05 01:06

does it work with WindowBorderLess=1 ?

http://stackoverflow.com/questions/18728821/multiple-displays-in-sdl2

(=> sounds like a bug in SDL2)

also i don't think that many people have two monitors, but idk. (no major bug because not few people are affected, also you already described a workarround)

abma

2014-09-05 00:46

administrator   ~0013597

Last edited: 2014-09-05 01:12

you can try to set the env var SDL_VIDEO_FULLSCREEN_HEAD=0

from here:
http://stackoverflow.com/questions/19431170/fullscreen-modes-in-ubuntu-sdl-opengl

"Modechanges are eeeeevil, especially in multi-display environments."

you should use WindowBorderLess=1

Jools

2014-09-05 17:05

reporter   ~0013599

I tried to set WindowBorderLess=1 in settings and the env var SDL_VIDEO_FULLSCREEN_HEAD to 0, but it didn't help. The problem is evident already at the game menu, the picture of the island with palms.

If I move the window to my primary display (with win+shift+left arrow), it will retain the resolution of the secondary display. And when I give spring focus again it will move again to the secondary display.

Something has to tell spring.exe where to open, I wonder if it's a registry value or something. I don't understand so much about SDL, but in SDL 1.2 it always opened where it was run last time.

The obvious workaround is to not extend the display to secondary monitor, but that'a a very convenient thing to do as you can code and reload luaui at the same time without alt-tabbing.

abma

2014-09-06 03:12

administrator   ~0013600

please run http://springrts.com/dl/buildbot/default/develop/97.0.1-368-g4f0a478/win32/

and paste infolog.txt here again! it contains a bit more info:

https://github.com/spring/spring/commit/a66fada1be3bd805beba3c2d3d4a8920a773e764

with this info you should be able to configure spring that it runs on the second screen:

set XResolution,YResolution,WindowPosX,WindowPosY to the data from the second screen and FullScreen=0, WindowBorderLess=1

Jools

2014-09-08 19:14

reporter   ~0013622

Here is the infolog from 97-368 build. Spring runs on the display that is 1024*768 (it's a lcd TV) and I want it to run on the monitor with 1280*1024.

I think it identifies the 1024*768 as display 2 and the 1280*1024 as display 1 correctly.

abma

2014-09-09 00:02

administrator   ~0013625

Last edited: 2014-09-09 01:44

to run it on a specific monitor, set:
FullScreen=0
WindowBorderLess=1


and for monitor 1:

XResolution=1280
YResolution=1024
WindowPosX=0
WindowPosY=0

monitor 2:

XResolution=1024
YResolution=768
WindowPosX=1280
WindowPosY=0

please test and report back if this works!

Jools

2014-09-09 03:05

reporter   ~0013627

I can not set those parameters for monitor 1 and 2 separately, I have only 1 set of those parameters in springsettings.cfg. But if I set WindowPosX=0 then it does open up in monitor 1.

So the way to control window placement is in fact with those parameters, that's the solution to this report.

One thing, although minor, is that the mouse is not grabbed on the border between the two monitors, but it can be achieved by typing /grabinput. Has to be done each time though, although it can probably be made into a widget.

Jools

2014-09-09 03:06

reporter   ~0013628

But I consider the issue resolved, thank you very much.

Issue History

Date Modified Username Field Change
2014-09-03 14:41 Jools New Issue
2014-09-03 14:41 Jools File Added: infolog.txt
2014-09-03 14:43 Jools Note Added: 0013588
2014-09-03 14:52 Jools Note Added: 0013589
2014-09-05 00:43 abma Note Added: 0013596
2014-09-05 00:44 abma Note Edited: 0013596
2014-09-05 00:46 abma Note Added: 0013597
2014-09-05 00:50 abma Severity major => minor
2014-09-05 00:53 abma Note Edited: 0013596
2014-09-05 01:06 abma Note Edited: 0013596
2014-09-05 01:06 abma Status new => feedback
2014-09-05 01:12 abma Note Edited: 0013597
2014-09-05 17:05 Jools Note Added: 0013599
2014-09-05 17:05 Jools Status feedback => new
2014-09-06 03:12 abma Note Added: 0013600
2014-09-06 03:12 abma Assigned To => abma
2014-09-06 03:12 abma Status new => feedback
2014-09-08 19:12 Jools File Added: infolog_368.txt
2014-09-08 19:14 Jools Note Added: 0013622
2014-09-08 19:14 Jools Status feedback => assigned
2014-09-09 00:02 abma Note Added: 0013625
2014-09-09 01:44 abma Note Edited: 0013625
2014-09-09 03:05 Jools Note Added: 0013627
2014-09-09 03:06 Jools Note Added: 0013628
2014-09-11 22:42 abma Status assigned => resolved
2014-09-11 22:42 abma Resolution open => no change required