13
0

triggerbox: get thread-based deletion system to actually work

Needed to pass custom deleter to the shared_ptr<Trigger>::reset() call where the
trigger is replaced
This commit is contained in:
Paul Davis 2021-12-24 15:00:58 -07:00
parent a5c37e6fd4
commit 8c2bd1a555

View File

@ -113,7 +113,6 @@ Trigger::Trigger (uint32_t n, TriggerBox& b)
void
Trigger::request_trigger_delete (Trigger* t)
{
std::cerr << "RTD\n";
TriggerBox::worker->request_delete_trigger (t);
}
@ -1835,12 +1834,7 @@ TriggerBox::maybe_swap_pending (uint32_t slot)
if (p == Trigger::MagicClearPointerValue) {
all_triggers[slot]->clear_region ();
} else {
if (all_triggers[slot]) {
/* Put existing Trigger for this slot in the deletion queue */
// XXX _deletion_queue....;
}
all_triggers[slot].reset (p);
all_triggers[slot].reset (p, Trigger::request_trigger_delete);
TriggerSwapped (slot); /* EMIT SIGNAL */
}
}
@ -2990,7 +2984,6 @@ TriggerBoxThread::set_region (TriggerBox& box, uint32_t slot, boost::shared_ptr<
void
TriggerBoxThread::request_delete_trigger (Trigger* t)
{
std::cerr << "RDT\n";
TriggerBoxThread::Request* req = new TriggerBoxThread::Request (DeleteTrigger);
req->trigger = t;
queue_request (req);
@ -2999,6 +2992,5 @@ TriggerBoxThread::request_delete_trigger (Trigger* t)
void
TriggerBoxThread::delete_trigger (Trigger* t)
{
std::cerr << "trigger delete for " << t << endl;
delete t;
}