2009-07-07 10 views
0

J'Allouer une entrée de couleur avec le code suivant, je l'utilise pour dessiner correctement:Impossible de libérer une entrée de palette de couleurs dans Xlib avec XFreeColors()

char *color_name = "red"; 
XColor color, exact; 

XAllocNamedColor(display, colormap, color_name, &color, &exact); 

Puis, quand je ne ai plus besoin de la entrée couleur, je tente de le libérer:

XFreeColors(display, colormap, &color.pixel, 1, 0); 

Cet appel génère l'erreur suivante:

Error of failed request: BadAccess (attempt to access private resource denied) 
Major opcode of failed request: 88 (X_FreeColors) 
Serial number of failed request: 17 
Current serial number in output stream: 19 

y at-il quelque chose que je suis-je mal? Comment puis-je libérer cette entrée de couleur? Cette entrée de couleur devrait être libérée?

Répondre

1

Résolu: Je faisais deux appel à XFreeColors:

XFreeColors(display, colormap, &color.pixel, 1, 0); 
XFreeColors(display, colormap, &exact.pixel, 1, 0); 

Le deuxième appel avec doit pas être fait exact, ce n'est pas nécessaire.