From: Tim H. <ho...@wu...> - 2008-06-18 10:31:26
|
Hi Brendan, David, et al, I was seeing some unexplained X lockups related to fullscreen, and I finally traced the issue down. On my machine (ThinkPad T60), my two highest-resolution modes are 1400x1050 and 1280x1024. At work, I plug into a monitor with maximum resolution 1280x1024, so I often run my desktop at that resolution. After some head-scratching, here's what I've determined: 1. If I run my laptop (using its screen only, not connected to the external monitor) at 1400x1050 mode, TuxMath fullscreen works fine. 2. If I have re-started X at work, plugged into the monitor and running at 1280x1024, TuxMath fullscreen works fine. 3. If I'm running without the monitor, but running X & my desktop at 1280x1024 anyway, then I was getting X lockups on fullscreen but not --windowed. It turns out that the problem in situation #3 is that SDL_ListModes would still list 1400x1050 as the first entry, even though X was running at 1280x1024. TuxMath tried to set 1400x1050 as the resolution, but this led to an X lockup (fixed by Ctrl-Alt-Backspace). With some random experimentation, I finally figured out that the lockup can at least be avoided by _not_ using atexit() to register the cleanup function---then tuxmath "just" crashes (whew). So I replaced the atexit() registration of cleanup back to what it used to be, a direct call to cleanup. (Weird---I thought that's what atexit is supposed to be for, handling unexpected problems...) I've committed that change. Now X doesn't lock up during a crash, instead I get the following output on the console: X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 134 (XFree86-VidModeExtension) Minor opcode of failed request: 10 (XF86VidModeSwitchToMode) Value in failed request: 0x86 Serial number of failed request: 109 Current serial number in output stream: 111 Can anyone else verify that this is a problem, or is it just my combination of hardware/drivers? (I've tried both fbdev & fglrx). Does anyone know how one can determine the desktop's current resolution, so that we can avoid trying to set a too-high resolution? Or is this an SDL bug? Best, --Tim |