[vtkusers] Fullscreen mode problem

Nabil El Ouazzani ouanabil at googlemail.com
Mon Jun 1 04:16:17 EDT 2009


subject:Fullscreen mode problem
Hi,

I'm having some trouble with the vtkRenderWindow full screen mode under
X11. When I activate full screen mode, the window renders to full screen
correctly, however all keyboard/mouse interaction with the window appears
to cease, ie no further clicks/keypresses are received by the application.

hier is the code:
   typedef int PipeHandle;
   XtAppContext app_context;
void handle_timer(vtkObject* caller, unsigned long, void* clientdata, void*)
{
    vtkRenderWindowInteractor* iren=
static_cast<vtkInteractorStyle*>(caller)->GetInteractor();
    vtkCamera* cam = reinterpret_cast<vtkCamera*>(clientdata);
    iren->CreateTimer(VTKI_TIMER_UPDATE);
    iren->Render();
    }

void handle_console_event(PipeHandle handle)
{
    static char buf[1024];
    int num_read=0;
    num_read = read(handle, buf, 1024);

    if(num_read == 5 && (strncmp("exit", buf, 4) == 0 || strncmp("quit",
buf, 4) == 0))
    {
        XtAppSetExitFlag(app_context);
    }
}

static void x11_handle_console_event(XtPointer, int* pipe, XtInputId*)
{
    handle_console_event(*pipe);
}

class vtkMyCallback : public vtkCommand
{
    public:
     static vtkMyCallback *New()
     {
         return new vtkMyCallback;
     }

     virtual void Execute(vtkObject *caller1, unsigned long, void*)
     {
         vtkXRenderWindowInteractor *interact =
reinterpret_cast<vtkXRenderWindowInteractor*>(caller1);

         char* key = interact->GetKeySym();
          if (*key=='g')
         {
             this->Actor->GetProperty()->SetColor(0,1,0);

         }

         if (*key=='b')
         {
             this->Actor->GetProperty()->SetColor(0,0,1);
         }

         if (*key=='r')
         {
              this->Actor->GetProperty()->SetColor(1,0,0);
         }

     }

    void SetActor(vtkActor *actor)
    {
        this->Actor = actor;
    }

    protected:
        vtkActor *Actor;
        vtkRenderWindow* renWin;
};

int main()
{
    XtToolkitInitialize();
    app_context = XtCreateApplicationContext();
    XtAppAddInput(app_context, fileno(stdin),
(XtPointer)XtInputReadMask,x11_handle_console_event, NULL);

vtkRenderer* ren1 = vtkRenderer::New();
vtkRenderWindow* renWin = vtkRenderWindow::New();
   renWin->AddRenderer (ren1);

vtkXRenderWindowInteractor* iren1 = vtkXRenderWindowInteractor::New();
    iren1->SetRenderWindow(renWin);
    iren1->Initialize(app_context);

vtkInteractorStyleTrackballCamera *style =
vtkInteractorStyleTrackballCamera::New();
    iren1->SetInteractorStyle(style);

vtkCylinderSource *cylinder1 = vtkCylinderSource::New();
     cylinder1->SetCenter(0,0,0);
     cylinder1->SetRadius(1);
     cylinder1->SetHeight(2);
     cylinder1->SetResolution(100);


 vtkPolyDataMapper *cylinderMapper1 = vtkPolyDataMapper::New();
    cylinderMapper1->SetInputConnection (cylinder1 ->GetOutputPort());

vtkActor *cylinderActor1 = vtkActor::New();
    cylinderActor1->SetMapper(cylinderMapper1);
    cylinderActor1->GetProperty()->SetColor(1,0,0);
    cylinderActor1->SetPosition(1,1,1);

    ren1->AddActor(cylinderActor1);
    ren1->SetBackground(1, 1, 1 );
    renWin->FullScreenOn();

vtkCamera *cam1 = vtkCamera::New();
    ren1->ResetCamera();
    cam1 = ren1->GetActiveCamera();

vtkCallbackCommand* callback = vtkCallbackCommand::New();
    callback->SetClientData(cam1);
    callback->SetCallback(handle_timer);
    style->AddObserver(vtkCommand::TimerEvent, callback);

vtkMyCallback *cb = vtkMyCallback::New();
    cb->SetActor(cylinderActor1);
    style->AddObserver(vtkCommand::KeyReleaseEvent ,cb);
    iren1->CreateTimer(VTKI_TIMER_FIRST);

    printf("type 'exit' to quit\n");

  while(!XtAppGetExitFlag(app_context))
  {
        float x=0,y=0,z=0;
        for( double i = 0; i<9;i++)
        {
            {x=fmod(i,6);
            y=fmod(i,3);
            z=fmod(i,9);
        }
           cylinderActor1 ->SetPosition(x,y,z);
         XtAppProcessEvent(app_context, XtIMAll);

        }
  }
    return 0;
}

I am using Debian with VTK5.0, on a system with NVIDIA drivers.
Can anyone offer any suggestions as to why this is happening?

-- 
Cheers,
ouanabil
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20090601/a388f676/attachment.htm>


More information about the vtkusers mailing list