| 3708 | } |
| 3709 | |
| 3710 | void GuiManager::pollDevResourceHotReload() { |
| 3711 | if (!dev_resource_watch_.enabled) |
| 3712 | return; |
| 3713 | |
| 3714 | consumeDevResourceScanResult(); |
| 3715 | |
| 3716 | if (dev_resource_watch_.pending_rml_reload || |
| 3717 | dev_resource_watch_.pending_locale_reload) { |
| 3718 | if (shouldDeferDevResourceHotReload()) |
| 3719 | return; |
| 3720 | |
| 3721 | const bool reload_rml = dev_resource_watch_.pending_rml_reload; |
| 3722 | const bool reload_locale = dev_resource_watch_.pending_locale_reload; |
| 3723 | dev_resource_watch_.pending_rml_reload = false; |
| 3724 | dev_resource_watch_.pending_locale_reload = false; |
| 3725 | |
| 3726 | if (reload_locale) |
| 3727 | reloadLocalizationResources(); |
| 3728 | if (reload_rml || reload_locale) |
| 3729 | reloadRmlResources(); |
| 3730 | |
| 3731 | LOG_INFO("Hot-reloaded dev resources{}{}", |
| 3732 | reload_rml ? " (RmlUI)" : "", |
| 3733 | reload_locale ? " (locales)" : ""); |
| 3734 | } |
| 3735 | |
| 3736 | if (dev_resource_watch_.scan_future.valid()) |
| 3737 | return; |
| 3738 | |
| 3739 | const auto now = std::chrono::steady_clock::now(); |
| 3740 | if (dev_resource_watch_.next_scan != std::chrono::steady_clock::time_point{} && |
| 3741 | now < dev_resource_watch_.next_scan) { |
| 3742 | return; |
| 3743 | } |
| 3744 | dev_resource_watch_.next_scan = now + std::chrono::seconds(1); |
| 3745 | launchDevResourceScan(); |
| 3746 | } |
| 3747 | |
| 3748 | void GuiManager::shutdown() { |
| 3749 | endInteractiveTransitionGuard(); |