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) void GameEngine::manageTimer(std::string name, PyObject* target, int interval)
{ {
//std::cout << "Manage timer called. " << name << " " << interval << std::endl; //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 if (target == NULL || target == Py_None) // delete
{ {
Py_DECREF(target); Py_DECREF(timers[name].target);
timers.erase(name); timers.erase(it);
return; return;
} }
} }

View File

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

View File

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