summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/sound/samples.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/sound/samples.h')
-rw-r--r--src/devices/sound/samples.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/devices/sound/samples.h b/src/devices/sound/samples.h
index be5684bc37c..f3b6033021f 100644
--- a/src/devices/sound/samples.h
+++ b/src/devices/sound/samples.h
@@ -56,7 +56,18 @@ public:
// configuration helpers
void set_channels(uint8_t channels) { m_channels = channels; }
void set_samples_names(const char *const *names) { m_names = names; }
+
+ // start callback helpers
template <typename Object> void set_samples_start_callback(Object &&cb) { m_samples_start_cb = std::forward<Object>(cb); }
+ void set_samples_start_callback(start_cb_delegate callback) { m_samples_start_cb = callback; }
+ template <class FunctionClass> void set_samples_start_callback(const char *devname, void (FunctionClass::*callback)(), const char *name)
+ {
+ set_samples_start_callback(start_cb_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr)));
+ }
+ template <class FunctionClass> void set_samples_start_callback(void (FunctionClass::*callback)(), const char *name)
+ {
+ set_samples_start_callback(start_cb_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr)));
+ }
// getters
bool playing(uint8_t channel) const;