Commit 21ee5c05 authored by Sam Lantinga's avatar Sam Lantinga

Fixed bug #666

Don't let the event queue overflow with resize events

--HG--
extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%404322
parent 1ca4e2ce
...@@ -28,6 +28,21 @@ ...@@ -28,6 +28,21 @@
#include "SDL_mouse_c.h" #include "SDL_mouse_c.h"
#include "../video/SDL_sysvideo.h" #include "../video/SDL_sysvideo.h"
static int
RemovePendingSizeEvents(void * userdata, SDL_Event *event)
{
SDL_Event *new_event = (SDL_Event *)userdata;
if (event->type == SDL_WINDOWEVENT &&
event->window.event == SDL_WINDOWEVENT_RESIZED &&
event->window.windowID == new_event->window.windowID) {
/* We're about to post a new size event, drop the old one */
return 0;
}
return 1;
}
int int
SDL_SendWindowEvent(SDL_WindowID windowID, Uint8 windowevent, int data1, SDL_SendWindowEvent(SDL_WindowID windowID, Uint8 windowevent, int data1,
int data2) int data2)
...@@ -138,6 +153,12 @@ SDL_SendWindowEvent(SDL_WindowID windowID, Uint8 windowevent, int data1, ...@@ -138,6 +153,12 @@ SDL_SendWindowEvent(SDL_WindowID windowID, Uint8 windowevent, int data1,
event.window.data1 = data1; event.window.data1 = data1;
event.window.data2 = data2; event.window.data2 = data2;
event.window.windowID = windowID; event.window.windowID = windowID;
/* Fixes queue overflow with resize events that aren't processed */
if (windowevent == SDL_WINDOWEVENT_RESIZED) {
SDL_FilterEvents(RemovePendingSizeEvents, &event);
}
posted = (SDL_PushEvent(&event) > 0); posted = (SDL_PushEvent(&event) > 0);
} }
return (posted); return (posted);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment