diff options
| author | Yuqian Yang <crupest@crupest.life> | 2025-11-16 17:14:20 +0800 |
|---|---|---|
| committer | Yuqian Yang <crupest@crupest.life> | 2025-11-16 17:14:20 +0800 |
| commit | 1ce8866e5b88da6cc4b7cd4d3440f7d70c7be5db (patch) | |
| tree | c43f76eb308ed59570e61ed647371cce5e68d32e /include/cru/base/Event.h | |
| parent | 1ef4651c4002eb3a155bcd36fed1e5b6b63b1c80 (diff) | |
| download | cru-1ce8866e5b88da6cc4b7cd4d3440f7d70c7be5db.tar.gz cru-1ce8866e5b88da6cc4b7cd4d3440f7d70c7be5db.tar.bz2 cru-1ce8866e5b88da6cc4b7cd4d3440f7d70c7be5db.zip | |
Remove SelfResolvable.
Diffstat (limited to 'include/cru/base/Event.h')
| -rw-r--r-- | include/cru/base/Event.h | 19 |
1 files changed, 6 insertions, 13 deletions
diff --git a/include/cru/base/Event.h b/include/cru/base/Event.h index 226c2ea4..276c313f 100644 --- a/include/cru/base/Event.h +++ b/include/cru/base/Event.h @@ -1,8 +1,6 @@ #pragma once #include "Base.h" -#include "SelfResolvable.h" - #include <algorithm> #include <cassert> #include <functional> @@ -13,7 +11,7 @@ namespace cru { class EventHandlerRevoker; -class EventBase : public Object, public SelfResolvable<EventBase> { +class EventBase : public Object { friend EventHandlerRevoker; public: @@ -36,28 +34,23 @@ class EventHandlerRevoker { friend EventBase; private: - EventHandlerRevoker(ObjectResolver<EventBase>&& resolver, - EventBase::EventHandlerToken token) - : resolver_(std::move(resolver)), token_(token) {} + EventHandlerRevoker(EventBase* event, EventBase::EventHandlerToken token) + : event_(event), token_(token) {} public: /** * Revoke the registered handler. If the event has already been destroyed or * the handler is already revoked, nothing will be done. */ - void operator()() const { - if (const auto event = resolver_.Resolve()) { - event->RemoveHandler(token_); - } - } + void operator()() const { event_->RemoveHandler(token_); } private: - ObjectResolver<EventBase> resolver_; + EventBase* event_; EventBase::EventHandlerToken token_; }; inline EventHandlerRevoker EventBase::CreateRevoker(EventHandlerToken token) { - return EventHandlerRevoker(CreateResolver(), token); + return EventHandlerRevoker(this, token); } struct IBaseEvent : public virtual Interface { |
