Plusieurs événements de montage sur le montage iPod
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);
...
}
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 GIO
shows que l'un des objets GMount
n'a pas un objet GVolume
associé. Je ne sais pas comment interpréter cela.