GLUT hors main threat avec Sierra

ch3rrylondon

Membre enregistré
10 Juillet 2017
2
0
35
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.
 

ntx

Membre vénérable
Club MacG
15 Octobre 2004
12 128
376
92
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
      });
 

ch3rrylondon

Membre enregistré
10 Juillet 2017
2
0
35
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… :-(