Skip to content

Commit

Permalink
only call lia->get() if we actually have functions to delete
Browse files Browse the repository at this point in the history
  • Loading branch information
MinaciousGrace committed Dec 2, 2018
1 parent afd7214 commit 41a5c24
Showing 1 changed file with 24 additions and 22 deletions.
46 changes: 24 additions & 22 deletions src/Actor.cpp
Expand Up @@ -965,28 +965,30 @@ Actor::UpdateInternal(float delta_time)
return x.second <= 0;
}),
delayedFunctions.end());
auto L = LUA->Get();
for (auto id : delayedPeriodicFunctionIdsToDelete) {
luaL_unref(L, LUA_REGISTRYINDEX, id);
auto& vec = this->delayedPeriodicFunctions;
vec.erase(
std::remove_if(vec.begin(),
vec.end(),
[id](tuple<function<void()>, float, float, int>& x) {
return std::get<3>(x) == id;
}),
vec.end());
}
LUA->Release(L);
delayedPeriodicFunctionIdsToDelete.clear();
for (auto it = this->delayedPeriodicFunctions.begin();
it != this->delayedPeriodicFunctions.end();
++it) {
auto& delayedF = *it;
std::get<1>(delayedF) -= delta_time;
if (std::get<1>(delayedF) <= 0) {
std::get<0>(delayedF)();
std::get<1>(delayedF) = std::get<2>(delayedF);
if (!delayedPeriodicFunctionIdsToDelete.empty()) {
auto* L = LUA->Get();
for (auto id : delayedPeriodicFunctionIdsToDelete) {
luaL_unref(L, LUA_REGISTRYINDEX, id);
auto& vec = this->delayedPeriodicFunctions;
vec.erase(std::remove_if(
vec.begin(),
vec.end(),
[id](tuple<function<void()>, float, float, int>& x) {
return std::get<3>(x) == id;
}),
vec.end());
}
LUA->Release(L);
delayedPeriodicFunctionIdsToDelete.clear();
for (auto it = this->delayedPeriodicFunctions.begin();
it != this->delayedPeriodicFunctions.end();
++it) {
auto& delayedF = *it;
std::get<1>(delayedF) -= delta_time;
if (std::get<1>(delayedF) <= 0) {
std::get<0>(delayedF)();
std::get<1>(delayedF) = std::get<2>(delayedF);
}
}
}
}
Expand Down

0 comments on commit 41a5c24

Please sign in to comment.