Bon, les choses s'améliore.
Après restructuration complète de l'évaluation dans mon programme, le tout compile.
Pour cela:
** J'ai passé la méthode CasManager::callback(...) en statique, je ne suis pas obligé alors de la définir à l'extérieur de ma classe (plus simple pour moi).
** J'ai du décommenté dans config.h la ligne
Code : Tout sélectionner
/* Define to 1 if you have the `pthread' library (-lpthread). */
#define HAVE_LIBPTHREAD 1
(j'espère que j'ai bien fait.... Si c'est le cas, à noter pour les prochaines versions de qtgiac)
MAIS... (éh oui, il y a un "mais")
malheureusement, lorsque j'appelle kill_thread(context), ... toujours rien.... check_thread renvoie toujours 1.
Je récapitule ce que fait mon programme.
A l'initialisation:
Code : Tout sélectionner
giac::child_id=1;
signal(SIGINT,giac::ctrl_c_signal_handler);
context=new giac::context;
// Ca, c'est mon thread qui va surveiller à coup de checkThread(...) toutes les 50 ms si l'évaluation est finie
monitor=new MonitorThread(context);
logptr(new MyStream(this),context);
Lors du lancement de l'évaluation:
Code : Tout sélectionner
giac::ctrl_c=true;
if (giac::make_thread(expression,1,CasManager::callback,(void*)context,context))
{
disconnect(monitor,SIGNAL(finished()),mainWindow,SLOT(displayResult()));
// On lance alors la surveillance de l'évaluation
monitor->start();
// On indique que lorsque le monitoring s'interrompt, l'affichage doit être lancé
connect(monitor,SIGNAL(finished()),mainWindow,SLOT(displayResult()));
}
Le bouton stop lance quant à lui l'instruction:
Si vous voyez un truc qui m'a échappé....