Whoops, some issues with deleting timers.

This commit is contained in:
John McCardle 2024-03-07 09:49:24 -05:00
parent ccd79fc551
commit d417bdc8a3
3 changed files with 5 additions and 21 deletions

View File

@ -72,12 +72,13 @@ void GameEngine::run()
void GameEngine::manageTimer(std::string name, PyObject* target, int interval)
{
//std::cout << "Manage timer called. " << name << " " << interval << std::endl;
if (timers.find(name) != timers.end()) // overwrite existing
auto it = timers.find(name);
if (it != timers.end()) // overwrite existing
{
if (target == NULL || target == Py_None) // delete
{
Py_DECREF(target);
timers.erase(name);
Py_DECREF(timers[name].target);
timers.erase(it);
return;
}
}

View File

@ -2,26 +2,12 @@
Timer::Timer(PyObject* _target, int _interval, int now)
: target(_target), interval(_interval), last_ran(now)
{
//Py_INCREF(target);
}
{}
Timer::Timer()
: target(Py_None), interval(0), last_ran(0)
{}
Timer::Timer(Timer& other)
: target(other.target), interval(other.interval), last_ran(other.last_ran)
{
//Py_INCREF(target);
}
Timer::~Timer()
{
//if (target && target != Py_None)
// Py_DECREF(target);
}
bool Timer::test(int now)
{
if (!target || target == Py_None) return false;
@ -29,7 +15,6 @@ bool Timer::test(int now)
{
last_ran = now;
PyObject* args = Py_BuildValue("(i)", now);
std::cout << PyUnicode_AsUTF8(PyObject_Repr(args)) << std::endl;
PyObject_Call(target, args, NULL);
return true;
}

View File

@ -10,8 +10,6 @@ public:
int interval;
int last_ran;
Timer(); // for map to build
Timer(Timer& other); // copy constructor
Timer(PyObject*, int, int);
~Timer();
bool test(int);
};