Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SDL window restore SDL_VIDEORESIZE event issue... #539

Closed
SDLBugzilla opened this issue Feb 10, 2021 · 0 comments
Closed

SDL window restore SDL_VIDEORESIZE event issue... #539

SDLBugzilla opened this issue Feb 10, 2021 · 0 comments

Comments

@SDLBugzilla
Copy link
Collaborator

@SDLBugzilla SDLBugzilla commented Feb 10, 2021

This bug report was migrated from our old Bugzilla tracker.

These attachments are available in the static archive:

Reported in version: 1.2.14
Reported for operating system, platform: Windows Vista, x86

Comments on the original bug report:

On 2009-12-14 20:32:35 +0000, wrote:

Created attachment 464
Simple C++ openGL/SDL program to demonstrate SDL_VIDEORESIZE issue

I've been working on an SDL/OpenGL program, that among other things, must deal
with resizing events in order to adjust the aspect ratio.
It doesn't always seem to get the SDL_VIDEORESIZE event when it should, causing
the aspect ratio to not be adjusted as needed.

I've run it in debug mode and made these observations:
*When it initially starts up, if I maximize the window, it receives the
SDL_VIDEORESIZE event as needed.
*If, after starting up the the application and maximizing the window, I then
restore the window by double clicking the title bar, it does NOT receive the
SDL_VIDEORESIZE event.
*I can repeat the last two steps, and it will get continue to get the
SDL_VIDEORESIZE on the maximize but not get one on the restore.
*If I then do a slight adjustment to the width or height of the window, it will
get the SDL_VIDEORESIZE event.
*From then on, if I do restore operations to the window, the SDL_VIDEORESIZE
event will be caught properly.

I included a simple Open GL rotating pyramid program to demonstrate the
problem, written in Visual C++ 2008 Express. The steps above should produce
the error, in which case you will see an incorrect aspect ratio on the scene.
A Win32 function to create a message box is included at the problem point, but
remarked out. Uncomment it if you wish to use it.

See http://forums.libsdl.org/viewtopic.php?t=5291 for additional information.
See the attached Visual Studio solution (includes one .cpp file) for the
example program.

On 2010-03-28 15:15:16 +0000, vgvgf wrote:

Created attachment 502
Proposed patch for SDL_resize.c

The width and height values stored in SDL_VideoSurface are the sizes of the video surface when it was created. So, when the window is rezised back to its creation size, the following condition will make the SDL_PrivateResize function stop, and the video resize msg won't be queued.
if ( ! SDL_VideoSurface ||
((w == SDL_VideoSurface->w) && (h == SDL_VideoSurface->h)) ) {
return(0);
}

On 2011-12-30 02:59:51 +0000, Sam Lantinga wrote:

I'm okay with applying this patch, but be aware that the expected response to a resize message is that you call SDL_SetVideoMode() again with the new mode. This signals SDL that you're expecting the new size, and there may be other problems if you don't do this.

On 2011-12-30 03:02:27 +0000, Sam Lantinga wrote:

The patch is in, thanks!
http://hg.libsdl.org/SDL/rev/f56b95794ac8

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant