Skip to content

Commit

Permalink
Update joysticks and so forth during live resize
Browse files Browse the repository at this point in the history
  • Loading branch information
slouken committed Jan 20, 2025
1 parent dc67032 commit 1f824ea
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 24 deletions.
49 changes: 27 additions & 22 deletions src/events/SDL_events.c
Original file line number Diff line number Diff line change
Expand Up @@ -1354,29 +1354,8 @@ bool SDL_RunOnMainThread(SDL_MainThreadCallback callback, void *userdata, bool w
}
}

// Run the system dependent event loops
static void SDL_PumpEventsInternal(bool push_sentinel)
void SDL_PumpEventMaintenance(void)
{
// Free any temporary memory from old events
SDL_FreeTemporaryMemory();

// Release any keys held down from last frame
SDL_ReleaseAutoReleaseKeys();

// Run any pending main thread callbacks
SDL_RunMainThreadCallbacks();

#ifdef SDL_PLATFORM_ANDROID
// Android event processing is independent of the video subsystem
Android_PumpEvents(0);
#else
// Get events from the video subsystem
SDL_VideoDevice *_this = SDL_GetVideoDevice();
if (_this) {
_this->PumpEvents(_this);
}
#endif

#ifndef SDL_AUDIO_DISABLED
SDL_UpdateAudio();
#endif
Expand All @@ -1400,6 +1379,32 @@ static void SDL_PumpEventsInternal(bool push_sentinel)
#endif

SDL_SendPendingSignalEvents(); // in case we had a signal handler fire, etc.
}

// Run the system dependent event loops
static void SDL_PumpEventsInternal(bool push_sentinel)
{
// Free any temporary memory from old events
SDL_FreeTemporaryMemory();

// Release any keys held down from last frame
SDL_ReleaseAutoReleaseKeys();

// Run any pending main thread callbacks
SDL_RunMainThreadCallbacks();

#ifdef SDL_PLATFORM_ANDROID
// Android event processing is independent of the video subsystem
Android_PumpEvents(0);
#else
// Get events from the video subsystem
SDL_VideoDevice *_this = SDL_GetVideoDevice();
if (_this) {
_this->PumpEvents(_this);
}
#endif

SDL_PumpEventMaintenance();

if (push_sentinel && SDL_EventEnabled(SDL_EVENT_POLL_SENTINEL)) {
SDL_Event sentinel;
Expand Down
2 changes: 2 additions & 0 deletions src/events/SDL_events_c.h
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,8 @@ extern const char *SDL_CreateTemporaryString(const char *string);
extern void *SDL_ClaimTemporaryMemory(const void *mem);
extern void SDL_FreeTemporaryMemory(void);

extern void SDL_PumpEventMaintenance(void);

extern void SDL_SendQuit(void);

extern bool SDL_InitEvents(void);
Expand Down
6 changes: 4 additions & 2 deletions src/video/SDL_video.c
Original file line number Diff line number Diff line change
Expand Up @@ -3951,6 +3951,8 @@ void SDL_OnWindowLiveResizeUpdate(SDL_Window *window)
// Send an expose event so the application can redraw
SDL_SendWindowEvent(window, SDL_EVENT_WINDOW_EXPOSED, 0, 0);
}

SDL_PumpEventMaintenance();
}

static void SDL_CheckWindowSafeAreaChanged(SDL_Window *window)
Expand Down Expand Up @@ -4922,12 +4924,12 @@ bool SDL_GL_GetAttribute(SDL_GLAttr attr, int *value)
if (glBindFramebufferFunc && (current_fbo != 0)) {
glBindFramebufferFunc(GL_DRAW_FRAMEBUFFER, 0);
}
// glGetFramebufferAttachmentParameterivFunc may cause GL_INVALID_OPERATION when querying depth/stencil size if the
// glGetFramebufferAttachmentParameterivFunc may cause GL_INVALID_OPERATION when querying depth/stencil size if the
// bits is 0. From the GL docs:
// If the value of GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE is GL_NONE, then either no framebuffer is bound to target;
// or a default framebuffer is queried, attachment is GL_DEPTH or GL_STENCIL, and the number of depth or stencil bits,
// respectively, is zero. In this case querying pname GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME will return zero, and all
// other queries will generate an error.
// other queries will generate an error.
GLint fbo_type = GL_FRAMEBUFFER_DEFAULT;
if (attachment == GL_DEPTH || attachment == GL_STENCIL) {
glGetFramebufferAttachmentParameterivFunc(GL_FRAMEBUFFER, attachment, GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, &fbo_type);
Expand Down

0 comments on commit 1f824ea

Please sign in to comment.