No TimerEvent from vtkWin32RenderWindowInteractor when timers created
Timers do not seem to work with the vtkWin32RenderWindowInteractor.
The following code shows an animated cone and prints timer counts on Linux with vtkXRenderWindowInteractor, but shows no timer activity with vtkWin32RenderWindowInteractor:
#include "vtkCamera.h"
#include "vtkCommand.h"
#include "vtkPolyDataMapper.h"
#include "vtkNew.h"
#include "vtkRenderWindow.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkRenderer.h"
#include "vtkConeSource.h"
class CallbackClass
{
public:
CallbackClass(vtkCamera* camera) : TimerCount(0), Camera(camera) {}
void OnTimer(vtkObject* caller, unsigned long event, void*) {
std::cout << caller->GetClassName() << " ";
std::cout << vtkCommand::GetStringFromEventId(event) << " ";
std::cout << this->TimerCount << std::endl;
++this->TimerCount;
this->Camera->Roll(10);
static_cast<vtkRenderWindowInteractor*>(caller)->Render();
}
private:
int TimerCount;
vtkCamera* Camera;
};
int main(int, char* [])
{
vtkNew<vtkConeSource> sphereSource;
sphereSource->Update();
vtkNew<vtkPolyDataMapper> mapper;
mapper->SetInputConnection(sphereSource->GetOutputPort());
vtkNew<vtkActor> actor;
actor->SetMapper(mapper);
vtkNew<vtkRenderer> renderer;
renderer->AddActor(actor);
vtkNew<vtkRenderWindow> renderWindow;
renderWindow->AddRenderer(renderer);
vtkNew<vtkRenderWindowInteractor> interactor;
interactor->SetRenderWindow(renderWindow);
interactor->Initialize();
renderWindow->Render();
CallbackClass o(renderer->GetActiveCamera());
interactor->AddObserver(vtkCommand::TimerEvent, &o, &CallbackClass::OnTimer);
int timerId = interactor->CreateRepeatingTimer(1000);
interactor->Start();
interactor->DestroyTimer(timerId);
return 0;
}