Voici une liste d’astuces, de techniques que j’ai apprise durant mon Summer of Code. Elle est livré un peu en vrac, et peu, ou non, vous intéresser.
Allocation mémoire avec la Glib:
allocation mémoire pour des objets:
– g_new (struct_type, nombre)
– g_renew (struct_type, ancienne_allocation, nombre)
– g_unref_object (objet)
allocation simple:
– g_malloc (nombre_d’octet)
– g_realloc (ancienne_allocation, nombre_d’octet)
– g_free (mémoire)
Les allocations avec g_malloc sont couteuse, donc si la mémoire a une taille fixe, preferez g_slice.
Coder pour Gimp
debug des gobject et erreurs glib
Lancez Gimp avec l’argument –g-fatal-warnings
debug des evenements GTK
Lorsque GTK envois un évenement (appuie d’une touche, clic souris ..), Gimp prend la main sur le gestionnaire d’entrée/sortie. Si vous mettez un breackpoint dans la gestion d’un evenement, ce gestionnaire d’evenement n’est pas rendu à GTK quand le débuggeur bloque Gimp. Résultat vous ne pouvez plus utiliser ni clavier, ni souris. Pas pratique. La solution est de compiler votre propre GTK avec l’option –enable-debug=yes, compiler Gimp avec ce GTK, et lancer Gimp avec l’option –gtk-no-grabs.
autogen.sh
Les options de compilation sont visible avec ./configure –help
compiler sans optimisation
CFLAGS=-O0 ./autogen.sh –prefix=….
installation rapide des binaires uniquement
cd app/ && sudo make install-binPROGRAMS
Gobject
les gobject, c’est mal.
si vous avec un warning relatif au gobject, essayer un make install
quelque chose cloche ? essayez un make install
Babl
Babl est une librairie qui sert à l’abstraction des différents format de pixel (RVB, CMJN, ..)
déclarer un format
babl_type (« float »)
babl_type (« u8″)
babl_format_n (babl_type (« float »), nombre_element)
– R': gamma ajusté
– Ra: alpha pré-multiplié
<http://www.gimp.org/docs/plugin_in/appendix-alpha.html>
convertir des formats avec un Babl fish
babl_process (babl_fish, buffer_source, buffer_destination, nombre_d’element)
Gegl
creer un buffer
GeglBuffer *bfr = gegl_buffer_new (gegl_rectangle, babl_format)
buffer leak
Dans le fichier gegl/buffer/gegl_buffer.c, décommentez #define GEGL_BUFFER_DEBUG_ALLOCATION. A la sortie de Gimp, une trace d’allocation va être affiché. Vous pouvez convertir les adresses du binaire en position dans le code source avec addr2line -e app/.libs/gimp-2.7 adresse
Git
push dans une branche distante
git push origin soc-2010-cage
garder la branche à jour
git fetch origin && git rebase origin