bool ScenesStack::push(FunctSceneFactory factory, SceneArguments const& args) { IScene *scene = factory(args); if (!scene->initialize()) { delete scene; return false; } else { m_stack.push(scene); return true; } }