Перейти к содержанию

_dv_

Members
  • Постов

    1
  • Зарегистрирован

  • Посещение

    Никогда

Достижения _dv_

  1. Доброго времени суток. Надеюсь, что угадал с рубрикой. Пишу кроссплатформенную библиотеку, которая прикручивается к ff как компонент. В основном потоке ff создает экземпляр объекта (компонент), который в свою очередь запускает в новом потоке свои расчеты. О процессе расчета и его результатах из созданного раннее потока должны приходить уведомления. (Таким образом достигается асинхронность выполнения и развязывается поток обработки сообщений для интерфейса ff /чтоб не "замирал"/ и расчетов). В Windows все реализуется достаточно просто. При создании экземпляра в основном потоке, создается окно, указывается DefWndProc, задается сообщение WM_USER + n и пишется указанная функция обработки. Теперь создается поток, в нем запускаются расчеты, передается HWND созданного окна и как наступил момент оповещения - вызывается системный PostMessage на переданный указатель окна. Поскольку окно было создано в основном потоке, сообщения окну тоже будут обрабатываться в нем. Сделано это было для того, чтоб ff не ругался, что к нему (к другим компонентам ff) обращаются НЕ из основного потока. А теперь вопрос. Как подобную штуку можно реализовать для linux. Я пробовал примерно тоже самое. Создавал при помощи XLib окно, получал Widget окна через XtWindowToWidget, прикручивал ему обработчик XtAddEventHandler, посылал окну событие (например: keypress code=1) XSendMessage... А оно не ловится. Что делать ума не приложу. Обыскал все что можно в сети. Перерыл кучу man`ов. Может вообще идеология построения (передачи оповещений) должна быть другой? Может использовать какую-либо обертку для XLib? Буду очень благодарен за любые ссылки по теме, за идеи, до которых я не додумался. С уважением, DV.
×
×
  • Создать...