Trick list

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)
Voir la doc http://www.gegl.org/babl/#Vocabulary pour voir les formats disponible. Une petite précision:
– 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

Les commentaires sont fermés.