Made SDL_WINDOWEVENT_* and SDL_DISPLAYEVENT_* first class event types
Fixes https://github.com/libsdl-org/SDL/issues/6772
This commit is contained in:
@@ -671,7 +671,7 @@ static int SDLCALL SDL_RendererEventWatch(void *userdata, SDL_Event *event)
|
||||
{
|
||||
SDL_Renderer *renderer = (SDL_Renderer *)userdata;
|
||||
|
||||
if (event->type == SDL_WINDOWEVENT) {
|
||||
if (event->type >= SDL_WINDOWEVENT_FIRST && event->type <= SDL_WINDOWEVENT_LAST) {
|
||||
SDL_Window *window = SDL_GetWindowFromID(event->window.windowID);
|
||||
if (window == renderer->window) {
|
||||
if (renderer->WindowEvent) {
|
||||
@@ -682,8 +682,8 @@ static int SDLCALL SDL_RendererEventWatch(void *userdata, SDL_Event *event)
|
||||
* window display changes as well! If the new display has a new DPI,
|
||||
* we need to update the viewport for the new window/drawable ratio.
|
||||
*/
|
||||
if (event->window.event == SDL_WINDOWEVENT_SIZE_CHANGED ||
|
||||
event->window.event == SDL_WINDOWEVENT_DISPLAY_CHANGED) {
|
||||
if (event->type == SDL_WINDOWEVENT_SIZE_CHANGED ||
|
||||
event->type == SDL_WINDOWEVENT_DISPLAY_CHANGED) {
|
||||
/* Make sure we're operating on the default render target */
|
||||
SDL_Texture *saved_target = SDL_GetRenderTarget(renderer);
|
||||
if (saved_target) {
|
||||
@@ -736,16 +736,16 @@ static int SDLCALL SDL_RendererEventWatch(void *userdata, SDL_Event *event)
|
||||
if (saved_target) {
|
||||
SDL_SetRenderTarget(renderer, saved_target);
|
||||
}
|
||||
} else if (event->window.event == SDL_WINDOWEVENT_HIDDEN) {
|
||||
} else if (event->type == SDL_WINDOWEVENT_HIDDEN) {
|
||||
renderer->hidden = SDL_TRUE;
|
||||
} else if (event->window.event == SDL_WINDOWEVENT_SHOWN) {
|
||||
} else if (event->type == SDL_WINDOWEVENT_SHOWN) {
|
||||
if (!(SDL_GetWindowFlags(window) & SDL_WINDOW_MINIMIZED)) {
|
||||
renderer->hidden = SDL_FALSE;
|
||||
}
|
||||
} else if (event->window.event == SDL_WINDOWEVENT_MINIMIZED) {
|
||||
} else if (event->type == SDL_WINDOWEVENT_MINIMIZED) {
|
||||
renderer->hidden = SDL_TRUE;
|
||||
} else if (event->window.event == SDL_WINDOWEVENT_RESTORED ||
|
||||
event->window.event == SDL_WINDOWEVENT_MAXIMIZED) {
|
||||
} else if (event->type == SDL_WINDOWEVENT_RESTORED ||
|
||||
event->type == SDL_WINDOWEVENT_MAXIMIZED) {
|
||||
if (!(SDL_GetWindowFlags(window) & SDL_WINDOW_HIDDEN)) {
|
||||
renderer->hidden = SDL_FALSE;
|
||||
}
|
||||
|
||||
@@ -332,7 +332,7 @@ static void D3D_WindowEvent(SDL_Renderer *renderer, const SDL_WindowEvent *event
|
||||
{
|
||||
D3D_RenderData *data = (D3D_RenderData *)renderer->driverdata;
|
||||
|
||||
if (event->event == SDL_WINDOWEVENT_SIZE_CHANGED) {
|
||||
if (event->type == SDL_WINDOWEVENT_SIZE_CHANGED) {
|
||||
data->updateSize = SDL_TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1029,7 +1029,7 @@ void D3D11_Trim(SDL_Renderer *renderer)
|
||||
|
||||
static void D3D11_WindowEvent(SDL_Renderer *renderer, const SDL_WindowEvent *event)
|
||||
{
|
||||
if (event->event == SDL_WINDOWEVENT_SIZE_CHANGED) {
|
||||
if (event->type == SDL_WINDOWEVENT_SIZE_CHANGED) {
|
||||
D3D11_UpdateForWindowSizeChange(renderer);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1377,7 +1377,7 @@ static HRESULT D3D12_UpdateForWindowSizeChange(SDL_Renderer *renderer)
|
||||
|
||||
static void D3D12_WindowEvent(SDL_Renderer *renderer, const SDL_WindowEvent *event)
|
||||
{
|
||||
if (event->event == SDL_WINDOWEVENT_SIZE_CHANGED) {
|
||||
if (event->type == SDL_WINDOWEVENT_SIZE_CHANGED) {
|
||||
D3D12_UpdateForWindowSizeChange(renderer);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -324,8 +324,8 @@ static void GL_WindowEvent(SDL_Renderer *renderer, const SDL_WindowEvent *event)
|
||||
* changed behind our backs. x/y changes might seem weird but viewport
|
||||
* resets have been observed on macOS at minimum!
|
||||
*/
|
||||
if (event->event == SDL_WINDOWEVENT_SIZE_CHANGED ||
|
||||
event->event == SDL_WINDOWEVENT_MOVED) {
|
||||
if (event->type == SDL_WINDOWEVENT_SIZE_CHANGED ||
|
||||
event->type == SDL_WINDOWEVENT_MOVED) {
|
||||
GL_RenderData *data = (GL_RenderData *)renderer->driverdata;
|
||||
data->drawstate.viewport_dirty = SDL_TRUE;
|
||||
}
|
||||
|
||||
@@ -303,7 +303,7 @@ static void GLES2_WindowEvent(SDL_Renderer *renderer, const SDL_WindowEvent *eve
|
||||
{
|
||||
GLES2_RenderData *data = (GLES2_RenderData *)renderer->driverdata;
|
||||
|
||||
if (event->event == SDL_WINDOWEVENT_MINIMIZED) {
|
||||
if (event->type == SDL_WINDOWEVENT_MINIMIZED) {
|
||||
/* According to Apple documentation, we need to finish drawing NOW! */
|
||||
data->glFinish();
|
||||
}
|
||||
|
||||
@@ -69,7 +69,7 @@ static void SW_WindowEvent(SDL_Renderer *renderer, const SDL_WindowEvent *event)
|
||||
{
|
||||
SW_RenderData *data = (SW_RenderData *)renderer->driverdata;
|
||||
|
||||
if (event->event == SDL_WINDOWEVENT_SIZE_CHANGED) {
|
||||
if (event->type == SDL_WINDOWEVENT_SIZE_CHANGED) {
|
||||
data->surface = NULL;
|
||||
data->window = NULL;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user