Whoops, some issues with deleting timers.
This commit is contained in:
parent
ccd79fc551
commit
d417bdc8a3
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue