Многократные гору события на монтаже iPod

StackOverflow https://stackoverflow.com/questions/4605106

  •  25-09-2019
  •  | 
  •  

Вопрос

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

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);
    ...
}
Это было полезно?

Решение

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top