#include "IGLoop.h" // wird nach dem Hochfahren der IGLoop auf 'true' gesetzt, damit die weiteren // Fenster per GLUT-timer-callback eingehaengt werden koennen. bool IGLoop::initialized = false; // das dummy-Fenster wird beim Hochfahren der IGL erzeugt BaseWin *IGLoop::dummy = NULL; // Konstruktor IGLoop::IGLoop () { // ohne ein registriertes Fenster kann das GLUT-API nicht initialisiert // werden dummy = new BaseWin(1,1); // Starte die Event-Schleife als eigenen Thread pthread_create (&Thrd, NULL, (void*(*)(void*))EventLoop,NULL); } // Destruktor IGLoop::~IGLoop() { IGL_DEBUG("terminating IGLoop" << endl); // Auf Terminierung des Threads warten pthread_join (Thrd, NULL); IGL_DEBUG("done." << endl); } // Start der GLUT-Event-Schleife void* IGLoop::EventLoop(void *) { // die MainLoop terminiert nicht, GLUT ruft allerdings exit(0) auf, wenn // ein GLUT-Fenster vom Benutzer geschlossen wird glutMainLoop(); return NULL; }