Technical discussions | Discussions techniques
|
ChAnGFu, Thursday 10 July 2008 à 01:08
|
|
Subscription date : 17 January 2008
Messages : 1526
|
Salut tout le monde,
Pour facilité l'ajout de player, mav et moi avons décider de mettre en place un mini canevas a peu-pret identique a celui de rendering.
C'est a dire en créant un petit objet MusicPlayer qu'on remplira avec les différentes fonctions nécessaires.
Je mettrai a jour le topic a chaque changement dans le canevas pour les programmeurs souhaitant rajouter un player a l'applet.
Voila c'est tout pour l'instant. |
|
Mav, Thursday 10 July 2008 à 01:14
|
|
Subscription date : 29 November 2007
Messages : 3146
|
Comme dit dans d'autres topics, les fonctions pour exaile, banshee et listen sont prêtes
Listen est le moins favorisé de tous car ses fonctions dbus sont très limités.
Une fois le canevas effectué par Mr ChanGFu, il me restera à intégrer mon code et à passer aux autres lecteurs dans un second temps (mais bon on en est pas encore là hein ! :)) |
Subscription date : 30 November 2007
Messages : 17118
|
excellente initiative ! |
|
ChAnGFu, Friday 11 July 2008 à 03:09
|
|
Subscription date : 17 January 2008
Messages : 1526
|
Alors aux dernières nouvelles le canevas est bientôt prêt, il ne me manque plus qu'a bosser sur la partie notification.
Ensuite viendra le gros du travail, remanier xmms pour l'intégrer a MP et debugger tout ca! Une fois terminé, je commiterai pour que Mav s'amuse avec.
Voici la structure principale du canevas, ce sera elle qui sera remplis par chaque greffon ajouter a l'applet pour le controle d'un lecteur:
typedef void (* MusicPlayerAcquireDataFunc) (void);
typedef void (* MusicPlayerReadDataFunc) (void);
typedef void (* MusicPlayerFreeDataFunc) (void);
typedef void (* MusicPlayerConfigureFunc) (void);
typedef void (* MusicPlayerControlerFunc) (MyPlayerControl pControl);
struct _MusicPlayerHandeler {
MusicPlayerAcquireDataFunc acquisition;
MusicPlayerReadDataFunc read_data;
MusicPlayerFreeDataFunc free_data;
MusicPlayerConfigureFunc configure;
MusicPlayerControlerFunc control;
gchar *appclass;
gchar *name; };
Je posterai plus de précision quand je me battrai avec xmms |
Subscription date : 30 November 2007
Messages : 17118
|
Servira a repérer le lecteur dans la GList
si tu as une liste d'éléments repérés par une chaîne, il est peut-être plus judicieux d'utiliser une table de hashage.
Aussi je te conseille de faire un fork de l'applet xmms, histoire qu'elle continue à fonctionner le temps que la nouvelle soit opérationnelle |
|
Mav, Friday 11 July 2008 à 11:13
|
|
Subscription date : 29 November 2007
Messages : 3146
|
Je pense que c'est le but Mr Fabounet, d'ailleurs RB va y passer aussi (y a pas de raisons :)) |
|
ChAnGFu, Saturday 12 July 2008 à 19:54
|
|
Subscription date : 17 January 2008
Messages : 1526
|
Je viens au nouvelle pour signaler que le canevas est prêt et pratiquement fonctionnel.
J'y ai déjà inclue xmms.
Je commiterai apres les tests (vers 17h GMT -4)
Edit: C'est sur le svn => svn checkout http://svn.berlios.de/svnroot/repos/cairo-dock/trunk/plug-ins/musicPlayer |
|
ChAnGFu, Saturday 12 July 2008 à 21:41
|
|
Subscription date : 17 January 2008
Messages : 1526
|
Mav a toi de jouer, si tu as des problèmes n'hésite pas a demander. |
Subscription date : 30 November 2007
Messages : 17118
|
par contre maintenant y'a 2 plug-ins musicplayer, on prend lequel (celui avec un 'p' ou celui avec un 'P' ?) |
|
ChAnGFu, Sunday 13 July 2008 à 17:31
|
|
Subscription date : 17 January 2008
Messages : 1526
|
avec un P |
|
Mav, Sunday 13 July 2008 à 20:23
|
|
Subscription date : 29 November 2007
Messages : 3146
|
Je rentre lundi soir donc je m y mets dès que possible  |
|
Mav, Thursday 17 July 2008 à 01:24
|
|
Subscription date : 29 November 2007
Messages : 3146
|
Hello everybody !
Bon comme je languissais un peu, j'ai commencé alors que j'étais en vacs (je vous assure, récupérer les fichiers un par un par le WebSVN en 3G, c'est pas de la tarte ! :))
J'ai donc intégrer Exaile (commité en rev 1205) mais avec un support minimal pour le moment
Ce qui marche (à peu près) :
- l'affichage des titres en info-bulles lors du changement de piste
- le controle basique du lecteur au clic (play/pause/next/previous)
- l'état de lecture est présent en icone comme en desklet
- l'affichage du temps écoulé et du temps restant est OK
Ce qui ne marche pas (pour le moment) :
- impossible d'utiliser une fonction que j'ai rempli dans le handeler, Mr ChangFu, lors de l'appel à pMeasureTimer ca passe impec mais si j'appelle la fonction seule, ca passe pas (j'ai colmaté pour le moment en appellant la fonction directement :))
- quelques infos sont manquantes, notamment la track number (exaile a décidé que c'était pas important donc on mettait pas ca en méthode DBus...) et le temps écoulé (là c'est encore plus comique, il donne le temps total mais pour le temps écoulé, c'est en pourcentage donc bah faut faire le piti calcul qui va bien mais pas eu le courage ce soir) Toujours le problème de Track Number mais c'est irresolvable
- le dessin est pour le moment approximatif, je me suis surtout occupé d'homogénéiser au max avec ta structure
- les pochettes (mais ca ne saurait tarder, c'est qu'une question de dessin)
J'ai encore un dernier truc qui n'est pas propre et qu il faudra que je change (ou pas, car le fait que exaile n'ait pas de signaux est chiant à gérer), c'est la connexion DBus, je suis obligé de la vérifier à chaque requête, ce qui est assez lourd
J'ai commité pour que changfu puisse corriger (j'ai pas touché à ton code, sauf à une comparaison dans draw, tu verras, chez moi elle cacatait) et que je puisse y avoir accès demain à l'école si le cours est chiant
J'ai laissé un max de debugs pour le moment donc t'inquiète pas si ca défile
Bonne nuit !
EDIT du 19/07 : avancement |
|
Mav, Saturday 19 July 2008 à 20:06
|
|
Subscription date : 29 November 2007
Messages : 3146
|
Yo !
L'intégration de exaile est quasi terminée, il faut juste que je rajoute une fonction à cairo-dock pour Dbus dans le fichier cairo-dock-dbus.c.
J'ai juste un souci; c'est pour gérer la classe du lecteur. Quand je rentre dans le handeler toutes les infos, il plante quelque soit la valeur que je mette sauf "Exaile".
Voici mon remplissage :
pExaile->appclass = g_strdup("exaile.py");
pExaile->name = g_strdup("Exaile");
Mais quand je fais un xprop sur la fenêtre, j'ai ca en retour :
WM_CLASS(STRING) = "exaile.py", "Exaile.py"
WM_ICON_NAME(STRING) = "Lecteur de musique Exaile"
WM_NAME(STRING) = "Lecteur de musique Exaile"
Donc en gros, je ne peux pas ouvrir le lecteur en cliquant sur l'icone du plugin mais par contre, si je l ouvre à la main, il est bien géré, et s'intègre au plugin.
Bref, je ne comprends pas pourquoi quand je mets pExaile->name = g_strdup("Lecteur de musique Exaile") ca se vautre comme une grosse loutre bourrée à la bière dès le démarrage.
Une idée ? |
|
Mav, Saturday 19 July 2008 à 20:23
|
|
Subscription date : 29 November 2007
Messages : 3146
|
J'ai rencontré 3 autres problèmes :
- lors du premier chargement, le texte sur l'icone ne se met pas à jour, il reste avec l'étiquette MusicPlayer (faut que je vois d'où ca vient dans la fonction de dessin), la chanson suivante, tout est ok !
- lors d'un clic droit, si on va dans le sous-menu exaile, il plante, au lieu d'afficher le About, ca j'ai pas trouvé d'où ca vient !
- j'ai des plantages de temps en temps, si je ferme exaile, CD me dit 'Out of memory', je pense qu'il essaye d'accéder à des infos sur dbus mais le bus n'existe plus sur le proxy DBus, normalement ce cas est géré mais je vois pas du tout pourquoi ca plante (surement au thread lancé par pMeasureTimer(), parce que ca le fait pas tout le temps.
Pour l'affichage de la pochette, j'arrive à récupérer le chemin de la pochette, je sais où l'afficher mais on va perdre les icones d'état de lecture, y a pas moyen de mettre des emblèmes plutôt qu'un fichier en dur pour chaque état ? Ca nous aiderait pour avoir la pochette avec un emblème de l'état de la lecture. |
Subscription date : 29 November 2007
Messages : 7408
|
C'est pour quand le support Rhythmbox ? |
|
Mav, Sunday 20 July 2008 à 00:25
|
|
Subscription date : 29 November 2007
Messages : 3146
|
Un peu après quand même, le temps que j'intègre les lecteurs qui gèrent dbus à moitié (ou comme un pied ! Listen pour ne pas le citer :))
Ensuite j evais intégrer les lecteurs qui gèrent totalement Dbus |
Subscription date : 29 November 2007
Messages : 7408
|
Cool ! |
|
ChAnGFu, Sunday 20 July 2008 à 22:25
|
|
Subscription date : 17 January 2008
Messages : 1526
|
Le plantage lors de l'affichage du menu contextuel est due a l'interrogation de l'handeler par l'applet sur l'état des fonctions supportées.
J'ai corrigée normalement.
Pour l'affichage de la pochette c'est simple. On rajoute un gboolean bUseCover, puis un petit if (bUseCover) dans applet-draw.c entraîne le dessin de la pochette et affiche en emblème l'état de la lecture.
Aussi dans applet-dbus.c, je ne suis pas daccord avec le faite que ce soit la qu'on renseigne les services et méthodes, elle devrai se faire dans la fonction de configuration de l'handeler (void cd_exaile_dbus (void)) tout doit être le plus décentralisé que possible.
Laisse Exaile comme nom, ça sert juste a différencier un handeler dun autre et à être mis en étiquette. |
Subscription date : 29 November 2007
Messages : 7408
|
Pour l'affichage de la pochette, j'ai fais une proposition dans le topic de l'applet Rhythmbox -> ici : http://www.glx-dock.org/bg_topic.php?t=52&pos=220
En gros pouvoir régler les coordonnées des 4 coins pour déformer l'image et pouvoir faire ceci (toujours avec une image de fond et une image de reflet ... ou d'avant-plan ):
(c'est un mockup )
Est-ce que c'est possible techniquement ? |
|
ChAnGFu, Sunday 20 July 2008 à 22:42
|
|
Subscription date : 17 January 2008
Messages : 1526
|
Honnêtement je ne sais pas si la libcairo permet se genre de déformation, seul fabounet peux nous éclairer |
Technical discussions | Discussions techniques
|