Russian Qt Forum
Ноябрь 23, 2024, 02:49 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Локализация плагина, создаваемого в другом потоке  (Прочитано 4240 раз)
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« : Январь 11, 2011, 14:13 »

Суть проблемы в следующем. Локализую плагин и устанавливаю переводчик через qApp->installTranslator(translator). Всё было хорошо до тех пор, пока плагин не начал создаваться в другом потоке. Теперь qApp->installTranslator(translator) генерит Debug Error с сообщением о том, что мой translator создан не в том же потоке, что и основное приложение. Как с этим правильнее бороться - переносить создание всего плагина на уровень основного потока или ограничиться вывертами на тему где создавать translator?
Записан
ритт
Гость
« Ответ #1 : Январь 11, 2011, 18:47 »

создавайте плагин в основном потоке приложения.
Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #2 : Январь 11, 2011, 20:59 »

Хотелось бы этого не делать. Плагин создаётся внутри потока сервера, который обрабатывает пользовательские запросы и в зависимости от типа запроса динамически грузит соответствующий плагин со своим собственным транслятором, а далее плагин взаимодействует с клиентом внутри того же потока и там же потом по пользовательскому запросу уничтожается. Пока не было необходимости в использовании локализации всё более-менее работало. Сейчас же наступает период сдачи работы заказчику - не хотелось бы сильно заморачиваться и переносить создание/удаление плагина в основной поток, опасаясь других "приятных" неожиданностей. Предпочел бы сейчас обойтись меньшим геморроем, а уж если будет сильно некрасиво поправить это дело на следующих этапах.
Записан
twp
Гость
« Ответ #3 : Январь 11, 2011, 21:45 »

идея с загрузкой нужного транслятора на стороне сервера не очень хорошая, ведь в общем случае сервер может одновременно работать с несколькими клиентами, а транслятор устанавливается на все приложение. Сервер только одного клиента может обрабатывать или сразу несколько?
Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #4 : Январь 12, 2011, 06:18 »

Сразу несколько. Я эту ситуацию могу контролировать, введя глобальный (в рамках сервера) хеш трансляторов для всех плагинов.
Записан
ритт
Гость
« Ответ #5 : Январь 12, 2011, 12:48 »

тогда moveTothread(qApp->thread()) транслятору?
но всё-равно, звучит неправильно...
Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #6 : Январь 12, 2011, 13:14 »

Ну да. Из простых решений остаётся только moveToThread. Попробую пока так, хотя мне тоже это как-то не кошерно.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.145 секунд. Запросов: 23.