| 556 | ReShadeRegisterEventForAddon(nullptr, ev, callback); |
| 557 | } |
| 558 | void ReShadeRegisterEventForAddon(void *module, reshade::addon_event ev, void *callback) |
| 559 | { |
| 560 | if (ev >= reshade::addon_event::max) |
| 561 | return; |
| 562 | |
| 563 | reshade::addon_info *const info = reshade::find_addon(module != nullptr ? module : callback); |
| 564 | if (info == nullptr) |
| 565 | { |
| 566 | reshade::log::message(reshade::log::level::error, "Could not find associated add-on and therefore failed to register an event."); |
| 567 | return; |
| 568 | } |
| 569 | |
| 570 | assert(info->handle == module || module == nullptr); |
| 571 | |
| 572 | #if RESHADE_ADDON == 1 |
| 573 | // Block all application events when building without add-on loading support |
| 574 | if (info->handle != g_module_handle && (ev > reshade::addon_event::destroy_effect_runtime && ev < reshade::addon_event::present)) |
| 575 | { |
| 576 | reshade::log::message(reshade::log::level::error, "Failed to register an event because only limited add-on functionality is available!"); |
| 577 | return; |
| 578 | } |
| 579 | #endif |
| 580 | |
| 581 | std::vector<void *> &event_list = reshade::addon_event_list[static_cast<uint32_t>(ev)]; |
| 582 | event_list.push_back(callback); |
| 583 | |
| 584 | info->event_callbacks.emplace_back(static_cast<uint32_t>(ev), callback); |
| 585 | |
| 586 | #if RESHADE_VERBOSE_LOG |
| 587 | reshade::log::message(reshade::log::level::debug, "Registered event callback %p for event %s.", callback, addon_event_to_string(ev)); |
| 588 | #endif |
| 589 | } |
| 590 | void ReShadeUnregisterEvent(reshade::addon_event ev, void *callback) |
| 591 | { |
| 592 | ReShadeUnregisterEventForAddon(nullptr, ev, callback); |
no test coverage detected