| 577 | } |
| 578 | |
| 579 | void Director::handleSDLEvent(const SDL_Event& event) { |
| 580 | switch (event.type) { |
| 581 | // User-requested quit |
| 582 | case SDL_QUIT: |
| 583 | _stoped = true; |
| 584 | Event::send("AppEvent"_slice, "Quit"s); |
| 585 | cleanup(); |
| 586 | if (Singleton<HttpServer>::isInitialized()) { |
| 587 | SharedHttpServer.stop(); |
| 588 | } |
| 589 | if (Singleton<HttpClient>::isInitialized()) { |
| 590 | SharedHttpClient.stop(); |
| 591 | } |
| 592 | if (Singleton<AsyncThread>::isInitialized()) { |
| 593 | SharedAsyncThread.cancel(); |
| 594 | } |
| 595 | if (Singleton<WasmRuntime>::isInitialized()) { |
| 596 | SharedWasmRuntime.clear(); |
| 597 | } |
| 598 | break; |
| 599 | // The application is being terminated by the OS. |
| 600 | case SDL_APP_TERMINATING: |
| 601 | Event::send("AppEvent"_slice, "Quit"s); |
| 602 | break; |
| 603 | // The application is low on memory, free memory if possible. |
| 604 | case SDL_APP_LOWMEMORY: |
| 605 | Event::send("AppEvent"_slice, "LowMemory"s); |
| 606 | break; |
| 607 | // The application is about to enter the background. |
| 608 | case SDL_APP_WILLENTERBACKGROUND: |
| 609 | _paused = true; |
| 610 | Event::send("AppEvent"_slice, "WillEnterBackground"s); |
| 611 | break; |
| 612 | case SDL_APP_DIDENTERBACKGROUND: |
| 613 | bgfx::reset(0, 0); |
| 614 | Event::send("AppEvent"_slice, "DidEnterBackground"s); |
| 615 | break; |
| 616 | case SDL_APP_WILLENTERFOREGROUND: |
| 617 | Event::send("AppEvent"_slice, "WillEnterForeground"s); |
| 618 | break; |
| 619 | case SDL_APP_DIDENTERFOREGROUND: |
| 620 | _paused = false; |
| 621 | SharedView.reset(); |
| 622 | Event::send("AppEvent"_slice, "DidEnterForeground"s); |
| 623 | Event::send("AppChange"_slice, "Size"s); |
| 624 | break; |
| 625 | case SDL_WINDOWEVENT: { |
| 626 | switch (event.window.event) { |
| 627 | case SDL_WINDOWEVENT_HIDDEN: |
| 628 | _paused = true; |
| 629 | break; |
| 630 | case SDL_WINDOWEVENT_SHOWN: |
| 631 | _paused = false; |
| 632 | break; |
| 633 | case SDL_WINDOWEVENT_RESIZED: |
| 634 | case SDL_WINDOWEVENT_SIZE_CHANGED: |
| 635 | SharedView.reset(); |
| 636 | Event::send("AppChange"_slice, "Size"s); |