Добрый день.
Потихоньку вливаюсь в Gtkmm и столкнулся со следующей проблемой:
У меня многопоточное приложение. Каждый поток занимается отдельной задачей. Чтобы потоки могли сообщать Gtk потоку о результатах своей работы и передавать данные, я использую Glib::Dispatcher. Для каждого потока у меня создан отдельный его экземпляр, и каждый поток генерирует сигналы через "свой" Glib::Dispatcher.
Проблема заключается в следующем - если при обработке сигнала какого-либо Glib::Dispatcher'а я отображаю диалог, который блокирует выполнение сигнала:
Gtk::MessageDialog dialog(parent_window, message, false, Gtk::MESSAGE_WARNING, Gtk::BUTTONS_OK, true);
dialog.run();
то пока пользователь не нажмет на кнопку OK, обработчики других Dispatcher'ов вызываться не будут, несмотря на то, что потоки будут генерировать для них сигналы. После нажатия пользователем на кнопку OK произойдет последовательный запуск обработчиков всех Dispatcher'ов для всех сгенерированных за это время сигналов.
Подскажите, пожалуйста, можно ли как нибудь решить эту проблему (чтобы при открытии диалога посредством dialog.run() блокировался только обработчик текущего Dispatcher'а, а не всех, которые присутствуют в программе)?
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Стекирование обработчиков сигналов (2017)
- Форум [C, gtk+] Обработчики сигналов (2010)
- Форум Gtkmm (2012)
- Форум gtkmm (2008)
- Форум cl-gobject-introspection и динамические обработчики сигналов (2017)
- Форум speech-dispatcher (2017)
- Форум True multiple dispatch! (2015)
- Форум gtkmm+glademm (2005)
- Форум gtkmm + dbus (2006)
- Форум glib (2003)