Несколько событий монтирования при монтировании iPod - PullRequest
0 голосов
/ 05 января 2011

Я работаю над приложением, которое должно определить, смонтирован или отключен том хранилища. Я использую GIO для этого. Я слушаю сигналы mount-added и mount-removed. Все отлично работает, когда я монтирую / размонтирую флешку. Тем не менее, я вижу проблему при установке iPod. Я получаю два обратных вызова каждый при монтировании и отключении. Я предположил, что один из GMount объектов будет затенен , но g_mount_is_shadowed возвращает false для обоих. Как мне решить, какой из них обрабатывать, а какой игнорировать? Я не могу обработать оба. Я должен обнаружить монтирование / размонтирование, соответствующее устройству хранения, и обработать только это.

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);
    ...
}

1 Ответ

0 голосов
/ 06 января 2011

Я понял это.GIO испускает сигнал mount-added для каждой добавляемой файловой системы.IPod имеет две файловые системы - одну для ОС и одну для хранения музыки.Отсюда и повторный звонок.То же самое происходит при размонтировании.Это не имеет ничего общего с затененными конями.К сожалению, я до сих пор не знаю, как отличить два крепления.Единственное отличие, которое показывает GIO, состоит в том, что с одним из объектов GMount не связан объект GVolume.Я не знаю, как это интерпретировать.

...