VST3: Allow multiple identical timer-handlers (#8550)
Also prefer `const_iterator`, following ``` iterator boost::unordered_map::erase(const_iterator position); ```
This commit is contained in:
parent
e568434300
commit
98847b115e
@ -90,11 +90,11 @@ public:
|
|||||||
|
|
||||||
void clear () {
|
void clear () {
|
||||||
Glib::Threads::Mutex::Lock lm (_lock);
|
Glib::Threads::Mutex::Lock lm (_lock);
|
||||||
for (boost::unordered_map<FileDescriptor, EventHandler>::iterator it = _event_handlers.begin (); it != _event_handlers.end (); ++it) {
|
for (boost::unordered_map<FileDescriptor, EventHandler>::const_iterator it = _event_handlers.begin (); it != _event_handlers.end (); ++it) {
|
||||||
g_source_remove (it->second._source_id);
|
g_source_remove (it->second._source_id);
|
||||||
g_io_channel_unref (it->second._gio_channel);
|
g_io_channel_unref (it->second._gio_channel);
|
||||||
}
|
}
|
||||||
for (boost::unordered_map<guint, Linux::ITimerHandler*>::iterator it = _timer_handlers.begin (); it != _timer_handlers.end (); ++it) {
|
for (boost::unordered_map<guint, Linux::ITimerHandler*>::const_iterator it = _timer_handlers.begin (); it != _timer_handlers.end (); ++it) {
|
||||||
g_source_remove (it->first);
|
g_source_remove (it->first);
|
||||||
}
|
}
|
||||||
_event_handlers.clear ();
|
_event_handlers.clear ();
|
||||||
@ -118,9 +118,8 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
tresult rv = false;
|
tresult rv = false;
|
||||||
|
|
||||||
Glib::Threads::Mutex::Lock lm (_lock);
|
Glib::Threads::Mutex::Lock lm (_lock);
|
||||||
for (boost::unordered_map<FileDescriptor, EventHandler>::iterator it = _event_handlers.begin (); it != _event_handlers.end ();) {
|
for (boost::unordered_map<FileDescriptor, EventHandler>::const_iterator it = _event_handlers.begin (); it != _event_handlers.end ();) {
|
||||||
if (it->second._handler == handler) {
|
if (it->second._handler == handler) {
|
||||||
g_source_remove (it->second._source_id);
|
g_source_remove (it->second._source_id);
|
||||||
g_io_channel_unref (it->second._gio_channel);
|
g_io_channel_unref (it->second._gio_channel);
|
||||||
@ -151,15 +150,18 @@ public:
|
|||||||
return kInvalidArgument;
|
return kInvalidArgument;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tresult rv = false;
|
||||||
Glib::Threads::Mutex::Lock lm (_lock);
|
Glib::Threads::Mutex::Lock lm (_lock);
|
||||||
for (boost::unordered_map<guint, Linux::ITimerHandler*>::iterator it = _timer_handlers.begin (); it != _timer_handlers.end (); ++it) {
|
for (boost::unordered_map<guint, Linux::ITimerHandler*>::const_iterator it = _timer_handlers.begin (); it != _timer_handlers.end ();) {
|
||||||
if (it->second == handler) {
|
if (it->second == handler) {
|
||||||
g_source_remove (it->first);
|
g_source_remove (it->first);
|
||||||
_timer_handlers.erase (it);
|
it = _timer_handlers.erase (it);
|
||||||
return kResultTrue;
|
rv = kResultTrue;
|
||||||
|
} else {
|
||||||
|
++it;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return kResultFalse;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32 PLUGIN_API addRef () SMTG_OVERRIDE { return 1; }
|
uint32 PLUGIN_API addRef () SMTG_OVERRIDE { return 1; }
|
||||||
|
Loading…
Reference in New Issue
Block a user