Technical discussions | Discussions techniques
|
matttbe, Thursday 30 June 2011 à 02:18
|
|
Subscription date : 24 January 2009
Messages : 12573
|
Hello,
Pour les besoins d'une applet, j'aimerais utiliser une tâche CairoDockTask que propose CD. Seulement, il faudrait utiliser des secondes et j'ai besoin de millisecondes.
Est-ce dérangeant que je crée de nouvelles fonctions (...)_in_seconds et que je convertisse tout ce qui est utilisé dans le core et les plug-ins?
Par contre, dans le fichier cairo-dock-task.h, que fait ceci? if (pTask->iSidTimerUpdate == 0)
pTask->iSidTimerUpdate = g_timeout_add (MAX (100, MIN (0.10 * pTask->iPeriod, 333)), (GSourceFunc) _cairo_dock_check_for_update, pTask);
Enfin, surtout (MAX (100, MIN (0.10 * pTask->iPeriod, 333))
sachant que pTask->iPeriod est la période en secondes. |
Subscription date : 30 November 2007
Messages : 17118
|
c'est le timer qui vérifie si la tache est finie, et en gros si tu as une tache qui se répète peu souvent, on teste moins fréquemment.
par contre, pourquoi ne pas utiliser un simple g_timeout_add si c'est juste pour avoir un timer ?
en fait, les taches sont surtout intéressantes pour faire du traitement asynchrones (thread), genre récupérer la météo toutes les 15mn sans bloquer le dock. |
|
matttbe, Thursday 30 June 2011 à 13:41
|
|
Subscription date : 24 January 2009
Messages : 12573
|
Parce qu'avec un simple g_timeout, j'avais des coups de lag il me semble. Mais c'est p-ê parce que je récupérais les info trop souvent...
Est-ce que ce g_timeout_add lance la tâche dans un thread? Enfin, ça dépend peut-être si le temps de boucle est court ou non... |
Subscription date : 30 November 2007
Messages : 17118
|
avec un simple g_timeout_add, j'avais des coups de lag il me semble
c'est possible, car c'est une action non threadée (elle s'intègre à la main loop, donc si une autre tombe en même temps, ça peut bouchonner une fraction de seconde)
si tu veux utiliser un thread, il te faut scinder ton action en 2 avec une CairoTask:
la partie asynchrone, puis le dessin/animation dans la partie synchrone;
mais ce n'est intéressant que si la partie asynchrone prend du temps, car de toute façon le dessin ou l'animation sera toujours fait dans la main loop. |
|
matttbe, Tuesday 05 July 2011 à 23:03
|
|
Subscription date : 24 January 2009
Messages : 12573
|
Je n'ai pas de gros calculs à faire mais ça se fait toutes les x fractions de secondes ; du coup pq pas lancer une boucle dans un thread mais alors autant ne pas lancer ça dans un CairoTask sauf s'il y a autre chose. |
|
fabounet, Wednesday 06 July 2011 à 16:53
|
|
Subscription date : 30 November 2007
Messages : 17118
|
est-ce que ça ne serait pas pulseaudio qui ramerait un peu ?
utiliser un thread a un coût, si tu n'as pas de trucs longs à faire ça n'est peut-être pas utile. |
|
matttbe, Thursday 07 July 2011 à 09:07
|
|
Subscription date : 24 January 2009
Messages : 12573
|
Je ne pense pas que ça vienne de pulseaudio mais je pense surtout que si c'est répété toutes les 1/4 de seconde et si le dock fait autre chose en meme temps (une tâche avec des outils externes par une applet, une bulle de dialogue à afficher, etc.) ça peut vite faire laguer le dock de 1/8, 1/16 de secondes ou moins et ça se voit vite je pense. |
Subscription date : 30 November 2007
Messages : 17118
|
oui c'est possible, tu as quoi comme tache périodique qui tourne dans le dock ?
ce qui est bizarre tout de même c'est qu'en passant la souris dans le dock en continu, tout est très fluide. |
|
matttbe, Wednesday 13 July 2011 à 14:59
|
|
Subscription date : 24 January 2009
Messages : 12573
|
J'ai qqs écoutes via DBus (Messaging Menu, alsaMixer, applets extras, gnote mais surtout MP qui parfois me donne des coups de lags aux changements de musique...) |
Subscription date : 30 November 2007
Messages : 17118
|
ah, il ne devrait pas, c'est avec quel backend ?
il me semble que tous les appels Dbus sont asynchrones, mais il y'en a peut-être un qui ne l'est pas, il faudrait le débusquer  |
|
matttbe, Saturday 16 July 2011 à 14:53
|
|
Subscription date : 24 January 2009
Messages : 12573
|
Surtout avec Banshee il me semble. Enfin, il me semble que tout banshee est lent aux changements de musique et ça se répercute sur le dock. |
Technical discussions | Discussions techniques
|