This bug was originally reported by bw at the glscene.ru forums. Not tested by me.
1) In SDLWindow.pas the mistake has been admitted. Wneh a stream is stopped by calling StopThread, variable FThread was not nulled by method StopThread, naturally, secondary attempt to stop a stream caused an error. This situation is specific, but nevertheless serious.
To correct this, you need to delete or comment out line " TSDLEventThread (FThread) .Owner: = nil; " In a method " TSDLWindow. StopThread ".
2) These lines need to be transfered from TSDLWindow.CreateOrRecreateSDLSurface to TSDLWindow.ResizeGLWindow:
const
cPixelDepthToBpp: array[Low(TSDLWindowPixelDepth)..High(TSDLWindowPixelDepth)] of Integer = (16, 24);
var
videoFlags : Integer;
...
videoFlags := BuildSDLVideoFlags;
FSDLSurface := SDL_SetVideoMode(Width, Height, cPixelDepthToBpp[PixelDepth], videoflags);
if not Assigned(FSDLSurface) then
RaiseSDLError('Unable to create surface.');
The problem was that after resolution was changed, mouse coordinates remained the same, i.e. corresponded to SDL_SetVideoMode.