Just glancing over this I found a few spots which do lockScreen/clearScreen/unlockScreen. This seems a bit wasteful. I think you can consider using OSystem::fillScreen instead, when the Screen is not locked.