| 592 | ReShadeUnregisterEventForAddon(nullptr, ev, callback); |
| 593 | } |
| 594 | void ReShadeUnregisterEventForAddon(void *module, reshade::addon_event ev, void *callback) |
| 595 | { |
| 596 | if (ev >= reshade::addon_event::max) |
| 597 | return; |
| 598 | |
| 599 | reshade::addon_info *const info = reshade::find_addon(module != nullptr ? module : callback); |
| 600 | if (info == nullptr) |
| 601 | return; // Do not log an error here, since this may be called if an add-on failed to load |
| 602 | |
| 603 | assert(info->handle == module || module == nullptr); |
| 604 | |
| 605 | #if RESHADE_ADDON == 1 |
| 606 | if (info->handle != g_module_handle && (ev > reshade::addon_event::destroy_effect_runtime && ev < reshade::addon_event::present)) |
| 607 | return; |
| 608 | #endif |
| 609 | |
| 610 | std::vector<void *> &event_list = reshade::addon_event_list[static_cast<uint32_t>(ev)]; |
| 611 | event_list.erase(std::remove(event_list.begin(), event_list.end(), callback), event_list.end()); |
| 612 | |
| 613 | info->event_callbacks.erase(std::remove(info->event_callbacks.begin(), info->event_callbacks.end(), std::make_pair(static_cast<uint32_t>(ev), callback)), info->event_callbacks.end()); |
| 614 | |
| 615 | #if RESHADE_VERBOSE_LOG |
| 616 | reshade::log::message(reshade::log::level::debug, "Unregistered event callback %p for event %s.", callback, addon_event_to_string(ev)); |
| 617 | #endif |
| 618 | } |
| 619 | |
| 620 | #if RESHADE_GUI |
| 621 |
no test coverage detected