pen: fix leak caused by pen subsystem

This commit is contained in:
Anonymous Maarten
2023-11-27 21:37:02 +01:00
committed by Anonymous Maarten
parent fbb0914b78
commit a197efe3a7
4 changed files with 20 additions and 0 deletions

View File

@@ -898,6 +898,7 @@ void SDL_QuitMouse(void)
} }
SDL_SetRelativeMouseMode(SDL_FALSE); SDL_SetRelativeMouseMode(SDL_FALSE);
SDL_ShowCursor(); SDL_ShowCursor();
SDL_PenQuit();
if (mouse->def_cursor) { if (mouse->def_cursor) {
SDL_SetDefaultCursor(NULL); SDL_SetDefaultCursor(NULL);

View File

@@ -829,6 +829,19 @@ void SDL_PenInit(void)
#endif #endif
} }
void SDL_PenQuit(void)
{
SDL_DelHintCallback(SDL_HINT_PEN_NOT_MOUSE,
SDL_PenUpdateHint, &pen_mouse_emulation_mode);
SDL_DelHintCallback(SDL_HINT_PEN_DELAY_MOUSE_BUTTON,
SDL_PenUpdateHint, &pen_delay_mouse_button_mode);
#ifndef SDL_THREADS_DISABLED
SDL_DestroyMutex(SDL_pen_access_lock);
SDL_pen_access_lock = NULL;
#endif
}
SDL_bool SDL_PenPerformHitTest(void) SDL_bool SDL_PenPerformHitTest(void)
{ {
return pen_mouse_emulation_mode == PEN_MOUSE_EMULATE; return pen_mouse_emulation_mode == PEN_MOUSE_EMULATE;

View File

@@ -331,6 +331,11 @@ extern int SDL_SendPenWindowEvent(Uint64 timestamp, SDL_PenID instance_id, SDL_W
*/ */
extern void SDL_PenInit(void); extern void SDL_PenInit(void);
/**
* De-initialises the pen subsystem.
*/
extern void SDL_PenQuit(void);
#endif /* SDL_pen_c_h_ */ #endif /* SDL_pen_c_h_ */
/* vi: set ts=4 sw=4 expandtab: */ /* vi: set ts=4 sw=4 expandtab: */

View File

@@ -54,6 +54,7 @@
#define SDL_SendPenWindowEvent SDL_SUT_SendPenWindowEvent #define SDL_SendPenWindowEvent SDL_SUT_SendPenWindowEvent
#define SDL_PenPerformHitTest SDL_SUT_PenPerformHitTest #define SDL_PenPerformHitTest SDL_SUT_PenPerformHitTest
#define SDL_PenInit SDL_SUT_PenInit #define SDL_PenInit SDL_SUT_PenInit
#define SDL_PenQuit SDL_SUT_PenQuit
/* ================= Mock API ================== */ /* ================= Mock API ================== */