Ciao a tutti,
nella mia applicazione sto utlilizzando un QTimer con intervallo 100ms.
Il segnale timeout e' connesso a uno slot che incrementa un contatore,
in modo da emettere un segnale quando il conteggio arriva a 5,
un altro quando il segnale arriva a 10, un altro ancora quando arriva a 20.
In pratica con un solo QTimer e un contatore vorrei emettere diversi segnali
con diversa periodicità.
Da aggiungere che la mia applicazione gira su sistema embedded cortex a8
con openGL e dopo che l'utente sceglie determinati parametri e preme start
inizia una animazione di crossfading e blurring che dura finche l'utente preme stop.
Finché non parte l'animazione, i timing dei contatori sono corretti.
Quando l'animazione e' eseguita, i timing sono ritardati quasi del doppio,
nonostante l'animazione sia fluidissima, la cpu non supera il 40% e la ram il 50%
e sono cmq sicuro che il blurring e il crossfading sono fatti dall'openGL (shading language in QML).
Ho letto da qualche parte che quando si utlizza openGL in Qt, lo scheduler
esegue ad ogni loop una funzione di openGL update che e' bloccante.
Mi chedo: cosa succede se il Qtimer emette un segnale mentre esegue questa funzione?
e se addirittura ne emettesse due? verrebbero valutati al prossimo loop
o il secondo sovrascrive il primo e incremento il contatore solo una volta?
In generale cosa succede ad ogni loop se mentre vengono eseguiti gli slot,
mi arriva un segnale asincrono come puo essere un segnale da un timer?
L'esecuzione del codice dell slot si blocca per mettere in cosa il segnale
in arrivo e poi riprende da dove si era fermato o perdo completamente
il segnale?
Scusate per le mille domande, ma vorrei capirci di piu' e trovare una soluzione
al mio problema.
Grazie,
ciao
