Here is a snippet from vtkRenderWindowInteractor.cpp. I think if you have an empty observer for vtkCommand::ExitEvent, the application would not terminate. void vtkRenderWindowInteractor::ExitCallback() { if (this->HasObserver(vtkCommand::ExitEvent)) { this->InvokeEvent(vtkCommand::ExitEvent,NULL); } else { this->TerminateApp(); } }