The _screenSurface was not free'ed after being created. This is now
done at the end of run() (the Surface is created at the start of run()
when calling initialise()). Also moved a few free() from the destructor
to the end of run() in case run() can be called more than once on the
same engine.