| 585 | } |
| 586 | |
| 587 | static int SDLCALL |
| 588 | SDL_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 || |
nothing calls this directly
no test coverage detected