Question

Je travaille sur une application qui doit détecter si un volume de stockage est monté ou démonté. J'utilise GIO pour cela. Je l'écoute des signaux de mount-added et mount-removed. Tout fonctionne très bien quand je monter / démonter un stylo lecteur. Cependant, je vois un problème lors du montage d'un iPod. Je reçois deux callbacks chacun sur le mont et unmount. Je supposais l'un des objets GMount serait ombrées mais g_mount_is_shadowed est de retour faux pour les deux. Comment puis-je décider lequel de traiter et qui à ignorer? Je ne peux pas traiter à la fois. Je dois détecter le montage / démontage correspondant au dispositif de stockage et de processus seulement.

int main()
{
    g_type_init();
    GVolumeMonitor* volume_monitor = g_volume_monitor_get();
    g_signal_connect(G_OBJECT(volume_monitor), "mount-added", G_CALLBACK(mount_added), NULL);
    g_signal_connect(G_OBJECT(volume_monitor), "mount-removed", G_CALLBACK(mount_removed), NULL);

    GMainLoop* main_loop = g_main_loop_new(NULL, FALSE);        
    g_main_loop_run(main_loop);
    ...
}
Était-ce utile?

La solution

Je l'ai compris. GIO émet un signal de mount-added pour chaque système de fichiers qui est ajouté. L'iPod a deux systèmes de fichiers - un pour le système d'exploitation et un pour stocker de la musique. D'où le rappel répété. La même chose se Unmount. Cela n'a rien à voir avec pochettes de protection ombrés. Malheureusement, je ne sais toujours pas comment faire la distinction entre les deux supports. La seule différence est GIOshows que l'un des objets GMount n'a pas un objet GVolume associé. Je ne sais pas comment interpréter cela.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top