Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 07/12/2008, à 22:41

Jackass059

[problème] C et GTK

Bonjour à tous.

Je ne savais pas trop comment formuler le sujet, donc le titre n'est peut être pas très accrocheur, si vous avez des suggestions, je suis preneur smile

Voici le problème, dans un de mes programmes, j'ai ce morceau de code :

/* On dessine l'image à partir de son URI */
void cid_draw_image (char *image) {
	// buffer de pixels de la pochette
	GdkPixbuf *sCover;
	// buffer de pixels après redimenssionement
	GdkPixbuf *nCover;
	// pochette
	GtkWidget *cCover;
	
	cid_debug ("%s (%s);\n",__func__,image);

	/* On récupère l'image depuis son chemin, sinon on sort */
	cCover = cid_get_image_widget(image);
	if(!cCover)
		cid_exit(CID_GTK_ERROR,"%s() : error loading image",__func__);
		
	
	sCover = cid_get_pixbuf(cCover);
	
	nCover = gdk_pixbuf_scale_simple(sCover, cid->iWidth, cid->iHeight, GDK_INTERP_HYPER);
		
	cid->cSurface = cid_get_image_from_pixbuf (nCover);
	
	/// /!\ Fatal IO error 14 (Bad address) on X server :0.0.
		//g_object_unref(nCover);
		//g_object_unref(sCover);
		//gtk_widget_destroy(cCover);
	/// /!\ 
	
	gtk_widget_queue_draw (cid->cWindow);
}

Le problème est indiqué dans le code, mais je vais essayer de le formuler avec des "vrais" phrases.
Ce morceau de code me sert donc à dessiner une image à partir de son URI.
Dans un premier temps, je charge un GtkWidget à l'aide d'un gtk_image_new_from_file(imageURI);
Ensuite, je transforme ce widget en pixbuf à l'aide d'un gtk_image_get_pixbuf(GTK_IMAGE(imageWidget));
Puis je le redimensionne pour qu'il colle aux dimensions de ma fenêtre.

Donc tout ça c'est bien gentil et ça fonctionne très bien, malheureusement c'est la cause d'une petite fuite de mémoire. J'ai donc voulu libérer un peu de mémoire à l'aide des fonctions appropriées, malheureusement, je récupère cette erreur : Fatal IO error 14 (Bad address) on X server :0.0.
Mais le plus "drôle", c'est que je n'ai pas cette erreur à chaque fois ! (uniquement lorsque l'image que je souhaite charger est un svg à première vue).

L'un(e) d'entre vous aurait-il(elle) une explication et/ou solution ?

Merci.

Dernière modification par Jackass059 (Le 07/12/2008, à 22:42)


Il y a 10 types de personnes sur terre, celles qui comprennent le binaire, et les autres ...

Hors ligne