MCPcopy Create free account
hub / github.com/RavEngine/RavEngine / SDL_RendererEventWatch

Function SDL_RendererEventWatch

deps/SDL2/src/render/SDL_render.c:587–728  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

585}
586
587static int SDLCALL
588SDL_RendererEventWatch(void *userdata, SDL_Event *event)
589{
590 SDL_Renderer *renderer = (SDL_Renderer *)userdata;
591
592 if (event->type == SDL_WINDOWEVENT) {
593 SDL_Window *window = SDL_GetWindowFromID(event->window.windowID);
594 if (window == renderer->window) {
595 if (renderer->WindowEvent) {
596 renderer->WindowEvent(renderer, &event->window);
597 }
598
599 if (event->window.event == SDL_WINDOWEVENT_SIZE_CHANGED) {
600 /* Make sure we're operating on the default render target */
601 SDL_Texture *saved_target = SDL_GetRenderTarget(renderer);
602 if (saved_target) {
603 SDL_SetRenderTarget(renderer, NULL);
604 }
605
606 if (renderer->logical_w) {
607 UpdateLogicalSize(renderer);
608 } else {
609 /* Window was resized, reset viewport */
610 int w, h;
611
612 if (renderer->GetOutputSize) {
613 renderer->GetOutputSize(renderer, &w, &h);
614 } else {
615 SDL_GetWindowSize(renderer->window, &w, &h);
616 }
617
618 if (renderer->target) {
619 renderer->viewport_backup.x = 0;
620 renderer->viewport_backup.y = 0;
621 renderer->viewport_backup.w = w;
622 renderer->viewport_backup.h = h;
623 } else {
624 renderer->viewport.x = 0;
625 renderer->viewport.y = 0;
626 renderer->viewport.w = w;
627 renderer->viewport.h = h;
628 QueueCmdSetViewport(renderer);
629 FlushRenderCommandsIfNotBatching(renderer);
630 }
631 }
632
633 if (saved_target) {
634 SDL_SetRenderTarget(renderer, saved_target);
635 }
636 } else if (event->window.event == SDL_WINDOWEVENT_HIDDEN) {
637 renderer->hidden = SDL_TRUE;
638 } else if (event->window.event == SDL_WINDOWEVENT_SHOWN) {
639 if (!(SDL_GetWindowFlags(window) & SDL_WINDOW_MINIMIZED)) {
640 renderer->hidden = SDL_FALSE;
641 }
642 } else if (event->window.event == SDL_WINDOWEVENT_MINIMIZED) {
643 renderer->hidden = SDL_TRUE;
644 } else if (event->window.event == SDL_WINDOWEVENT_RESTORED ||

Callers

nothing calls this directly

Calls 9

SDL_GetWindowFromIDFunction · 0.85
SDL_GetRenderTargetFunction · 0.85
SDL_SetRenderTargetFunction · 0.85
UpdateLogicalSizeFunction · 0.85
SDL_GetWindowSizeFunction · 0.85
QueueCmdSetViewportFunction · 0.85
SDL_GetWindowFlagsFunction · 0.85
GetWindowViewportValuesFunction · 0.85

Tested by

no test coverage detected