truth5678 wrote:It is very likely a problem between the SDL software library and your (opengl) video subsystem. If you are unable to diagnose the indicated video driver issue and use of SDL applications, then it would be simple to edit a line in the dosbox-x code to enforce the 640x480 mode while voodoo=opengl.
See these functions in voodoo_opengl.cpp: SDL_Surface* SDL_SetVideoMode_Wrap(int width,int height,int bpp,Bit32u flags) -and- void voodoo_ogl_set_window(voodoo_state *v).
No, it is not a problem between the SDL software library and my opengl video subsystem. It is a bug in dosbox-x. voodoo_opengl.cpp contains (unless it was edited since I last got the source code) this code:
//EF2000 FIX
glViewport( 0, 0, v->fbi.width, v->fbi.height );
last_width = v->fbi.width;
last_height = v->fbi.height+80;
v->fbi.height = v->fbi.height+80;
If I remove the offending line, I no longer find that the size has increased by 80 each time. Of course, I have no idea what EF2000 problem I would break by removing the line, but it's certainly not an error on my side.
voodoo_opengl_set_window also contains this suspicious code. It doesn't affect me, but I think the "height" should be "width":
if( v->fbi.height < 480 && GFX_IsFullscreen()) adjust_y=(480-v->fbi.height)/2;
if( v->fbi.height < 640 && GFX_IsFullscreen()) adjust_x=(640-v->fbi.width)/2;
And there is no function named SDL_SetVideoMode_Wrap.
Once I make the fix above, I no longer have the problem of weirdly sized and corrupted windows. However, I still do have the problem that any non-voodoo windows are 640x480 in fullscreen, and all windows are 640x480 in windowed mode, no matter what settings I change. Any ideas on that?