#1834 closed defect (fixed)
GUI: Starting games in fullscreen doesn't work
Reported by: | SF/trinity78 | Owned by: | cyxx |
---|---|---|---|
Priority: | blocker | Component: | Ports |
Version: | Keywords: | ||
Cc: | Game: |
Description
ScummVM Daily Build 0.7.0 CVS Windows 2000 Service Pack 4
If you start ScummVM in window mode and then switch to fullscreen using the alt+enter button, ScummVM exits/crashes without an error message when pressing the "start"-button. For some strange if you start a game in window mode and after the game has started switch to fullscreen using alt+enter, everything works fine.
Ticket imported from: #1074931. Ticket imported from: bugs/1834.
Change History (14)
comment:1 by , 20 years ago
comment:2 by , 20 years ago
Found the error message: Assertion failed: _transactionMode == kTransactionNone, file backends/sdl/graphics.cpp, line 1153
comment:3 by , 20 years ago
Owner: | set to |
---|---|
Resolution: | → outdated |
Status: | new → closed |
comment:5 by , 20 years ago
Hmm ok. In this case the Windows Daily Snapshot (November 28, 2004, 4:40 pm) seems to be quite old, because I downloaded it one hour ago.
Couple of days = couple of hours maybe?
comment:6 by , 20 years ago
To reproduce the bug: 1. Run ScummVM without parameters 2. Switch to full screen mode 3. Run any game
comment:7 by , 20 years ago
Resolution: | outdated |
---|---|
Status: | closed → new |
Summary: | Starting games in fullscreen doesn't work → GUI: Starting games in fullscreen doesn't work |
comment:8 by , 20 years ago
Priority: | normal → high |
---|
comment:10 by , 20 years ago
Priority: | high → blocker |
---|
comment:11 by , 20 years ago
I add a quick look at it. For the reference, here's the backtrace : #0 OSystem_SDL::undrawMouse() (this=<incomplete type>) at backends/sdl/graphics.cpp:1153 #1 0x00402f7b in OSystem_SDL::setFullscreenMode(bool) ( this=<incomplete type>, enable=false) at backends/sdl/graphics.cpp:564 #2 0x00402072 in OSystem_SDL::endGFXTransaction() (this=<incomplete type>) at backends/sdl/graphics.cpp:78 #3 0x004c52e6 in Queen::QueenEngine::init(GameDetector&) ( this=<incomplete type>, detector=@0x22ff18) at queen/queen.cpp:333 #4 0x00406b97 in runGame(GameDetector&, OSystem*) (detector=@0x22ff18, system=0x1078428) at base/main.cpp:263 #5 0x0040708c in main (argc=1, argv=0x3f2570) at base/main.cpp:389
Basically, a call to undrawMouse() is made from setFullscreen() with _transactionMode == kTransactionCommit
As I am not that familiar with the SDL backend nor the transaction stuff (_sev told me it was semi-implemented), I can only give 2 suggestions : - change the assert in undrawMouse to accept the kTransactionCommit (quite hackish) - remove the undrawMouse() call in setFullscreen(); afterall, is it really necessary ? setFullscreen() calls internUpdateScreen() which refresh the whole screen and call drawMouse()....
comment:12 by , 20 years ago
Owner: | changed from | to
---|---|
Resolution: | → fixed |
Status: | new → closed |
comment:13 by , 20 years ago
Actually, the undrawMouse() is needed, because otherwise the mouse may leave traces in some systems (like in mine, because it switches between 555 and 565 mode; so when we switch the mode, the data gets converted, except the data behind the mouse).
So I commited the first suggested solution, I don't think that it is *that* hackish, actually :-)
comment:14 by , 6 years ago
Component: | --Unset-- → Ports |
---|
Sorry typos: alt + enter button = alt + enter keys For some strange "reason"
I'm tired. *sigh*