UI: Call frontend callbacks in reverse order

Allows safely removing callbacks from within the callbacks themselves.
This commit is contained in:
jp9000
2017-12-25 13:26:28 -08:00
parent 5645c02c8f
commit 03b8fd0186

View File

@@ -428,7 +428,8 @@ struct OBSStudioAPI : obs_frontend_callbacks {
void on_load(obs_data_t *settings) override
{
for (auto cb : saveCallbacks)
for (size_t i = saveCallbacks.size(); i > 0; i--) {
auto cb = saveCallbacks[i - 1];
cb.callback(settings, false, cb.private_data);
}
}
@@ -443,8 +444,10 @@ struct OBSStudioAPI : obs_frontend_callbacks {
void on_save(obs_data_t *settings) override
{
for (auto cb : saveCallbacks)
for (size_t i = saveCallbacks.size(); i > 0; i--) {
auto cb = saveCallbacks[i - 1];
cb.callback(settings, true, cb.private_data);
}
}
void on_event(enum obs_frontend_event event) override
@@ -452,8 +455,10 @@ struct OBSStudioAPI : obs_frontend_callbacks {
if (main->disableSaving)
return;
for (auto cb : callbacks)
for (size_t i = callbacks.size(); i > 0; i--) {
auto cb = callbacks[i - 1];
cb.callback(event, cb.private_data);
}
}
};