Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 08/12/2013, à 12:46

temps

gtk+ -3 g_timeout_add

Bonjour,
dans gtk+ -3, j'ai essayé d'utiliser une boucle infinie dans le main à l'aide de

    g_timeout_add(1000, (GSourceFunc) chacun_son_tour, (gpointer) window);

mais mon action est trop lourde et cela gel la fenêtre.

Mon idée pour contourner le problème est d'appeler une fonction qui retourne qu'elle a fini dès quelle a finie de lancer un bash en tache de fond.

Dans le bash je compte faire le traitement avec un timer qui regarde si la mélodie est entrain d'être joué, ou si il faut envoyer le morceau suivant. c'est dans le bash que toute la gestion sera faite, soit en récupérant le PID de l'application que le bash pilote, soit plus simple en calculant la durée des mélodies jouée (c'est une simple addition).
Est-ce que quelqu'un a un début de code pour créer un multithread sous gtk+ -3 de cette manière ?

Le but finale étant destinée à lm3jo, un synthétiseur qui crée les mélodies en utilisant la manipulation de formes par clique sur des boutons, ou plus précis en manipulant des fronts avec des curseurs.

Pour ceux qui veulent voir l'état du projet lm3jo c'est ici, il y a aussi la fenêtre en xml avec le main et encore une version sous qt5 et aussi sous la SDL

Cordialement


Parce que l'USB bootable est le support des systèmes experts,
Parce que l'USB bootable contient sa propre image au démarrage.
L'USB bootable permet de créer un monde à la dimension de son imagination
https://www.letime.net

Hors ligne

#2 Le 10/12/2013, à 13:22

telliam

Re : gtk+ -3 g_timeout_add

le muthithread n'est pas spécifique à gtk.
fais une recherches sur pthread sous google.
lancer un bash qui lance je suppose lui aussi un appel en tache de fond, ça me parait un peu lourd
il vradrait mieux que tu fasses tout ton traitement en C dans ton code, plutot que de lancer un bash, ça prend de la mémoire, du cpu et tu rajoutes de la latence à ton code.


"- Un intellectuel assis va moins loin qu'un con qui marche."
Maurice Biraud - Un Taxi pour Tobrouk
Michel Audiard

Hors ligne

#3 Le 10/12/2013, à 13:48

temps

Re : gtk+ -3 g_timeout_add

Bonjour,
Merci pour la réponse. J'ai pas eu le temps de travailler sur le projet car je prépare les JRES sur Montpellier qui commence aujourd'hui à 13h pour plusieurs jours. Une occasion de retrouver les amis et plein de projet du libre. Mais si j'en suis arrivé là, c'est que j'ai testé avant les différentes solutions en C, il doit rester quelques traces de pthread dans mes codes. Je ne sais pas pourquoi, mais le résultat est que la fenêtre gel, j'ai essayé avec des appli plus légère le muthithread ( g_timeout_add  ) ça marche, un peu moins bien avec pthread moins bien. Je pense que c'est du au fait que les appli derrière appellent des bibliothèques, en fait ici gtk+ 3 ne sert qu'à afficher et recueillir des données à l'aide de curseurs.
Je commencerai à voir comment optimiser les liens entre les langages la semaine prochaine. (ici bash et C sous gtk+ 3)
Cordialement


Parce que l'USB bootable est le support des systèmes experts,
Parce que l'USB bootable contient sa propre image au démarrage.
L'USB bootable permet de créer un monde à la dimension de son imagination
https://www.letime.net

Hors ligne