GLUT hors main threat avec Sierra

ch3rrylondon

Membre enregistré
10 Juillet 2017
2
0
38
Bonjour à tous,

J'ai un souci avec un code pro depuis que j'ai changé de machine et que je suis passée à Sierra : mon code n'appelle pas GLUT dans le main, mais maintenant cela pose un problème fatal :
GLUT Fatal Error: internal error: NSInternalInconsistencyException, reason: nextEventMatchingMask should only be called from the Main Thread!

Je n'ai rien changé au code, cela fonctionnait auparavant sur Snow Leopard, mais plus maintenant. Connaissez-vous un moyen simple de contourner ça ?

Merci beaucoup.
Anaïs.
 
Quand tu programmes des IHM les appels aux fonctions qui rafraîchissent l'affichage doivent toujours se faire dans le thread principal. Donc mets ton code à jour (pour ne pas dire corriger ta bourde :) ) en conséquence pour Sierra.
Avec Grand Central Dispatch, tu as un truc du genre :
Bloc de code:
dispatch_async(dispatch_get_main_queue(), ^{
        //this runs on the main thread.  Use theData
      });
 
Bouh, quelle mauvaise nouvelle !

En fait (j'ai voulu faire court), c'est pas mon code, mais un super-code écrit par mon boss, qui fait mille autres trucs que ce qui m'intéresse, je touche pas du tout au main (et encore moins à la visu, vu que je n'y connais rien).

Ce qu'il y a dans mon main c'est ça :
Bloc de code:
    if (Data::noview) {
        Pt(No viewing) NL
    } else {
        pthread_create( thread+0, 0, view, 0 );
    }

et puis en fait le viewer aussi :
Bloc de code:
void *view ( void *ptr )
{
    printf("Starting viewer \n");
    viewer(argcin,argvin); // sets-up graphical objects (types) thrn runs by callback
}


Je suis complètement perdue… :-(