summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/devcb.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/devcb.h')
-rw-r--r--src/emu/devcb.h16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/emu/devcb.h b/src/emu/devcb.h
index 6b16c37b33a..1ac9cd1e37f 100644
--- a/src/emu/devcb.h
+++ b/src/emu/devcb.h
@@ -899,7 +899,7 @@ public:
virtual void validity_check(validity_checker &valid) const override;
void resolve();
- void resolve_safe(Result dflt);
+ bool resolve_safe(Result dflt);
Result operator()(address_space &space, offs_t offset = 0, std::make_unsigned_t<Result> mem_mask = DefaultMask);
Result operator()(offs_t offset, std::make_unsigned_t<Result> mem_mask = DefaultMask);
@@ -958,11 +958,13 @@ void devcb_read<Result, DefaultMask>::resolve()
}
template <typename Result, std::make_unsigned_t<Result> DefaultMask>
-void devcb_read<Result, DefaultMask>::resolve_safe(Result dflt)
+bool devcb_read<Result, DefaultMask>::resolve_safe(Result dflt)
{
resolve();
- if (m_functions.empty())
+ bool resolved = !m_functions.empty();
+ if (!resolved)
m_functions.emplace_back([dflt] (address_space &space, offs_t offset, std::make_unsigned_t<Result> mem_mask) { return dflt; });
+ return resolved;
}
template <typename Result, std::make_unsigned_t<Result> DefaultMask>
@@ -2369,7 +2371,7 @@ public:
virtual void validity_check(validity_checker &valid) const override;
void resolve();
- void resolve_safe();
+ bool resolve_safe();
void operator()(address_space &space, offs_t offset, Input data, std::make_unsigned_t<Input> mem_mask = DefaultMask);
void operator()(address_space &space, Input data);
@@ -2420,11 +2422,13 @@ void devcb_write<Input, DefaultMask>::resolve()
}
template <typename Input, std::make_unsigned_t<Input> DefaultMask>
-void devcb_write<Input, DefaultMask>::resolve_safe()
+bool devcb_write<Input, DefaultMask>::resolve_safe()
{
resolve();
- if (m_functions.empty())
+ bool resolved = !m_functions.empty();
+ if (!resolved)
m_functions.emplace_back([] (address_space &space, offs_t offset, Input data, std::make_unsigned_t<Input> mem_mask) { });
+ return resolved;
}
template <typename Input, std::make_unsigned_t<Input> DefaultMask>