trigger_config_action

This commit is contained in:
angie 2024-06-03 23:13:56 -04:00
parent a3ac354eea
commit 68defcaf58
3 changed files with 7 additions and 1 deletions

View file

@ -128,6 +128,7 @@ uint32_t get_target_framerate(uint32_t original);
uint32_t get_display_refresh_rate(); uint32_t get_display_refresh_rate();
float get_resolution_scale(); float get_resolution_scale();
void load_shader_cache(std::span<const char> cache_data); void load_shader_cache(std::span<const char> cache_data);
void trigger_config_action();
// Audio // Audio
void init_audio(); void init_audio();

View file

@ -247,6 +247,10 @@ void ultramodern::load_shader_cache(std::span<const char> cache_data) {
events_context.action_queue.enqueue(LoadShaderCacheAction{cache_data}); events_context.action_queue.enqueue(LoadShaderCacheAction{cache_data});
} }
void ultramodern::trigger_config_action() {
events_context.action_queue.enqueue(UpdateConfigAction{});
}
std::atomic<ultramodern::renderer::SetupResult> renderer_setup_result = ultramodern::renderer::SetupResult::Success; std::atomic<ultramodern::renderer::SetupResult> renderer_setup_result = ultramodern::renderer::SetupResult::Success;
void gfx_thread_func(uint8_t* rdram, moodycamel::LightweightSemaphore* thread_ready, ultramodern::WindowHandle window_handle) { void gfx_thread_func(uint8_t* rdram, moodycamel::LightweightSemaphore* thread_ready, ultramodern::WindowHandle window_handle) {
@ -308,7 +312,7 @@ void gfx_thread_func(uint8_t* rdram, moodycamel::LightweightSemaphore* thread_re
} }
else if (const auto* config_action = std::get_if<UpdateConfigAction>(&action)) { else if (const auto* config_action = std::get_if<UpdateConfigAction>(&action)) {
auto new_config = ultramodern::renderer::get_graphics_config(); auto new_config = ultramodern::renderer::get_graphics_config();
if (!old_config->is_equal(*new_config)) { if (!new_config->is_equal(*old_config)) {
renderer_context->update_config(old_config, new_config); renderer_context->update_config(old_config, new_config);
old_config = new_config; old_config = new_config;
} }

View file

@ -27,6 +27,7 @@ static std::mutex graphic_config_mutex;
void ultramodern::renderer::set_graphics_config(std::unique_ptr<const GraphicsConfig>&& config) { void ultramodern::renderer::set_graphics_config(std::unique_ptr<const GraphicsConfig>&& config) {
std::lock_guard<std::mutex> lock(graphic_config_mutex); std::lock_guard<std::mutex> lock(graphic_config_mutex);
graphic_config.swap(config); graphic_config.swap(config);
ultramodern::trigger_config_action();
} }
const ultramodern::renderer::GraphicsConfig* ultramodern::renderer::get_graphics_config() { const ultramodern::renderer::GraphicsConfig* ultramodern::renderer::get_graphics_config() {