| 214 | } |
| 215 | |
| 216 | bool ConfigManager::ScheduleReload() |
| 217 | { |
| 218 | if (m_ReloadTimer) |
| 219 | { |
| 220 | LARGE_INTEGER waitTime{}; |
| 221 | // 200 ms, relative to current time. arbitrarily chosen to get a balance |
| 222 | // between feeling snappy and not triggering errors due to the various weird |
| 223 | // ways editors save files. |
| 224 | waitTime.QuadPart = -2000000; |
| 225 | if (SetWaitableTimer(m_ReloadTimer.get(), &waitTime, 0, TimerCallback, this, false)) |
| 226 | { |
| 227 | return true; |
| 228 | } |
| 229 | else |
| 230 | { |
| 231 | LastErrorHandle(spdlog::level::warn, L"Failed to set waitable timer"); |
| 232 | } |
| 233 | } |
| 234 | |
| 235 | return false; |
| 236 | } |
| 237 | |
| 238 | ConfigManager::ConfigManager(const std::optional<std::filesystem::path> &storageFolder, bool &fileExists, callback_t callback, void *context) : |
| 239 | m_ConfigPath(DetermineConfigPath(storageFolder)), |