Bonjour,
Pour initialiser les données partagées, j'ai utilisé les fonctions suivantes

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 
 
typedef struct aff_xy{
  float x;
  float y;
} pxy;
 
void main ()
{
  GtkWidget *widget;
  pxy *point_t2;
....
  (void)ini_t2(widget);
 
  point_t2 = g_object_get_data(G_OBJECT(widget), "atester");
  printf("%f -- %f \n", point_t2->x, point_t2->y);
}
 
void ini_t2(GtkWidget *widget)
{
  pxy point_t;
 
  point_t.x = 5.0;
  point_t.y = 45.2;
  g_object_set_data(widget, "atester", (gpointer)&point_t);
}
Or je constate que printf du main affiche toujours 0.0 et non les valeurs initialisées dans "ini_t2". Alors que si je fais le même printf dans ini_t2 en y ajoutant un g_object_get_data après, je trouve le bon résultat.
J'ai beaucoup de difficulté pour déceler l'origine de ce problème avec un mécanisme d'usage pourtant classique.
J'aimerais savoir si quelqu'un parmi vous a une idée sur ce problème

Merci à l'avance et cordialement.