parent
848fd1eab4
commit
615c935d11
8 changed files with 39 additions and 13 deletions
|
@ -704,6 +704,21 @@ typedef struct SDL_CameraDeviceEvent
|
||||||
SDL_CameraID which; /**< SDL_CameraID for the device being added or removed or changing */
|
SDL_CameraID which; /**< SDL_CameraID for the device being added or removed or changing */
|
||||||
} SDL_CameraDeviceEvent;
|
} SDL_CameraDeviceEvent;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Renderer event structure (event.render.*)
|
||||||
|
*
|
||||||
|
* \since This struct is available since SDL 3.1.7.
|
||||||
|
*/
|
||||||
|
typedef struct SDL_RenderEvent
|
||||||
|
{
|
||||||
|
SDL_EventType type; /**< SDL_EVENT_RENDER_TARGETS_RESET, SDL_EVENT_RENDER_DEVICE_RESET, SDL_EVENT_RENDER_DEVICE_LOST */
|
||||||
|
Uint32 reserved;
|
||||||
|
Uint64 timestamp; /**< In nanoseconds, populated using SDL_GetTicksNS() */
|
||||||
|
SDL_WindowID windowID; /**< The window containing the renderer in question. */
|
||||||
|
} SDL_RenderEvent;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Touch finger event structure (event.tfinger.*)
|
* Touch finger event structure (event.tfinger.*)
|
||||||
*
|
*
|
||||||
|
@ -980,6 +995,7 @@ typedef union SDL_Event
|
||||||
SDL_PenMotionEvent pmotion; /**< Pen motion event data */
|
SDL_PenMotionEvent pmotion; /**< Pen motion event data */
|
||||||
SDL_PenButtonEvent pbutton; /**< Pen button event data */
|
SDL_PenButtonEvent pbutton; /**< Pen button event data */
|
||||||
SDL_PenAxisEvent paxis; /**< Pen axis event data */
|
SDL_PenAxisEvent paxis; /**< Pen axis event data */
|
||||||
|
SDL_RenderEvent render; /**< Render event data */
|
||||||
SDL_DropEvent drop; /**< Drag and drop event data */
|
SDL_DropEvent drop; /**< Drag and drop event data */
|
||||||
SDL_ClipboardEvent clipboard; /**< Clipboard event data */
|
SDL_ClipboardEvent clipboard; /**< Clipboard event data */
|
||||||
|
|
||||||
|
|
|
@ -450,10 +450,15 @@ static void SDL_LogEvent(const SDL_Event *event)
|
||||||
break;
|
break;
|
||||||
SDL_EVENT_CASE(SDL_EVENT_CLIPBOARD_UPDATE)
|
SDL_EVENT_CASE(SDL_EVENT_CLIPBOARD_UPDATE)
|
||||||
break;
|
break;
|
||||||
SDL_EVENT_CASE(SDL_EVENT_RENDER_TARGETS_RESET)
|
|
||||||
break;
|
#define SDL_RENDEREVENT_CASE(x) \
|
||||||
SDL_EVENT_CASE(SDL_EVENT_RENDER_DEVICE_RESET)
|
case x: \
|
||||||
break;
|
SDL_strlcpy(name, #x, sizeof(name)); \
|
||||||
|
(void)SDL_snprintf(details, sizeof(details), " (timestamp=%u event=%s windowid=%u)", \
|
||||||
|
(uint)event->display.timestamp, name, (uint)event->render.windowID); \
|
||||||
|
break
|
||||||
|
SDL_RENDEREVENT_CASE(SDL_EVENT_RENDER_TARGETS_RESET);
|
||||||
|
SDL_RENDEREVENT_CASE(SDL_EVENT_RENDER_DEVICE_RESET);
|
||||||
|
|
||||||
#define SDL_DISPLAYEVENT_CASE(x) \
|
#define SDL_DISPLAYEVENT_CASE(x) \
|
||||||
case x: \
|
case x: \
|
||||||
|
|
|
@ -1559,8 +1559,9 @@ static bool D3D_Reset(SDL_Renderer *renderer)
|
||||||
// Let the application know that render targets were reset
|
// Let the application know that render targets were reset
|
||||||
{
|
{
|
||||||
SDL_Event event;
|
SDL_Event event;
|
||||||
|
SDL_zero(event);
|
||||||
event.type = SDL_EVENT_RENDER_TARGETS_RESET;
|
event.type = SDL_EVENT_RENDER_TARGETS_RESET;
|
||||||
event.common.timestamp = 0;
|
event.render.windowID = SDL_GetWindowID(SDL_GetRenderWindow(renderer));
|
||||||
SDL_PushEvent(&event);
|
SDL_PushEvent(&event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1084,8 +1084,9 @@ static bool D3D11_HandleDeviceLost(SDL_Renderer *renderer)
|
||||||
|
|
||||||
// Let the application know that the device has been reset or lost
|
// Let the application know that the device has been reset or lost
|
||||||
SDL_Event event;
|
SDL_Event event;
|
||||||
|
SDL_zero(event);
|
||||||
event.type = recovered ? SDL_EVENT_RENDER_DEVICE_RESET : SDL_EVENT_RENDER_DEVICE_LOST;
|
event.type = recovered ? SDL_EVENT_RENDER_DEVICE_RESET : SDL_EVENT_RENDER_DEVICE_LOST;
|
||||||
event.common.timestamp = 0;
|
event.render.windowID = SDL_GetWindowID(SDL_GetRenderWindow(renderer));
|
||||||
SDL_PushEvent(&event);
|
SDL_PushEvent(&event);
|
||||||
|
|
||||||
return recovered;
|
return recovered;
|
||||||
|
|
|
@ -1459,8 +1459,9 @@ static bool D3D12_HandleDeviceLost(SDL_Renderer *renderer)
|
||||||
|
|
||||||
// Let the application know that the device has been reset or lost
|
// Let the application know that the device has been reset or lost
|
||||||
SDL_Event event;
|
SDL_Event event;
|
||||||
|
SDL_zero(event);
|
||||||
event.type = recovered ? SDL_EVENT_RENDER_DEVICE_RESET : SDL_EVENT_RENDER_DEVICE_LOST;
|
event.type = recovered ? SDL_EVENT_RENDER_DEVICE_RESET : SDL_EVENT_RENDER_DEVICE_LOST;
|
||||||
event.common.timestamp = 0;
|
event.render.windowID = SDL_GetWindowID(SDL_GetRenderWindow(renderer));
|
||||||
SDL_PushEvent(&event);
|
SDL_PushEvent(&event);
|
||||||
|
|
||||||
return recovered;
|
return recovered;
|
||||||
|
|
|
@ -2519,8 +2519,9 @@ static bool VULKAN_HandleDeviceLost(SDL_Renderer *renderer)
|
||||||
|
|
||||||
// Let the application know that the device has been reset or lost
|
// Let the application know that the device has been reset or lost
|
||||||
SDL_Event event;
|
SDL_Event event;
|
||||||
|
SDL_zero(event);
|
||||||
event.type = recovered ? SDL_EVENT_RENDER_DEVICE_RESET : SDL_EVENT_RENDER_DEVICE_LOST;
|
event.type = recovered ? SDL_EVENT_RENDER_DEVICE_RESET : SDL_EVENT_RENDER_DEVICE_LOST;
|
||||||
event.common.timestamp = 0;
|
event.render.windowID = SDL_GetWindowID(SDL_GetRenderWindow(renderer));
|
||||||
SDL_PushEvent(&event);
|
SDL_PushEvent(&event);
|
||||||
|
|
||||||
return recovered;
|
return recovered;
|
||||||
|
|
|
@ -1899,13 +1899,13 @@ void SDLTest_PrintEvent(const SDL_Event *event)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SDL_EVENT_RENDER_TARGETS_RESET:
|
case SDL_EVENT_RENDER_TARGETS_RESET:
|
||||||
SDL_Log("SDL EVENT: render targets reset");
|
SDL_Log("SDL EVENT: render targets reset in window %" SDL_PRIu32, event->render.windowID);
|
||||||
break;
|
break;
|
||||||
case SDL_EVENT_RENDER_DEVICE_RESET:
|
case SDL_EVENT_RENDER_DEVICE_RESET:
|
||||||
SDL_Log("SDL EVENT: render device reset");
|
SDL_Log("SDL EVENT: render device reset in window %" SDL_PRIu32, event->render.windowID);
|
||||||
break;
|
break;
|
||||||
case SDL_EVENT_RENDER_DEVICE_LOST:
|
case SDL_EVENT_RENDER_DEVICE_LOST:
|
||||||
SDL_Log("SDL EVENT: render device lost");
|
SDL_Log("SDL EVENT: render device lost in window %" SDL_PRIu32, event->render.windowID);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SDL_EVENT_TERMINATING:
|
case SDL_EVENT_TERMINATING:
|
||||||
|
|
|
@ -36,15 +36,16 @@
|
||||||
static void android_egl_context_restore(SDL_Window *window)
|
static void android_egl_context_restore(SDL_Window *window)
|
||||||
{
|
{
|
||||||
if (window) {
|
if (window) {
|
||||||
SDL_Event event;
|
|
||||||
SDL_WindowData *data = window->internal;
|
SDL_WindowData *data = window->internal;
|
||||||
SDL_GL_MakeCurrent(window, NULL);
|
SDL_GL_MakeCurrent(window, NULL);
|
||||||
if (!SDL_GL_MakeCurrent(window, (SDL_GLContext)data->egl_context)) {
|
if (!SDL_GL_MakeCurrent(window, (SDL_GLContext)data->egl_context)) {
|
||||||
// The context is no longer valid, create a new one
|
// The context is no longer valid, create a new one
|
||||||
data->egl_context = (EGLContext)SDL_GL_CreateContext(window);
|
data->egl_context = (EGLContext)SDL_GL_CreateContext(window);
|
||||||
SDL_GL_MakeCurrent(window, (SDL_GLContext)data->egl_context);
|
SDL_GL_MakeCurrent(window, (SDL_GLContext)data->egl_context);
|
||||||
|
SDL_Event event;
|
||||||
|
SDL_zero(event);
|
||||||
event.type = SDL_EVENT_RENDER_DEVICE_RESET;
|
event.type = SDL_EVENT_RENDER_DEVICE_RESET;
|
||||||
event.common.timestamp = 0;
|
event.render.windowID = SDL_GetWindowID(SDL_GetRenderWindow(renderer));
|
||||||
SDL_PushEvent(&event);
|
SDL_PushEvent(&event);
|
||||||
}
|
}
|
||||||
data->backup_done = false;
|
data->backup_done = false;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue