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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Обработка сигналов из потока  (Прочитано 3919 раз)
burkav
Гость
« : Август 29, 2006, 23:12 »

Есть класс унаследованный от QThread - каждые 200 миллисекунд из run() он шлет signal с данными. Главный поток визуализирует эти данные. Примерно через 15-20 мин главный поток начинает обрабатывать эти сигналы "рывками" - тоесть если сначала интерфейс обновляется стабильно каждые 200 мс, то со временем наступают тормоза. Мне кажется забивается очередь событий, но пробовал qApp->ProcessEvents() - не помогает. Может кто сталкивался - подскажите.

Qt-4.1.4-x11 / SuSE Linux 9.3
Записан
Asaphus_Expansus
Гость
« Ответ #1 : Август 29, 2006, 23:30 »

А память в обработчике сигналов не течет? Сколько памяти на старте приложение берет и сколько имеет через 20 минут? Так, буквально на всякий случай...
Записан
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #2 : Август 30, 2006, 00:41 »

или еще вариант
если не успевают визуализироватся, то просто пропускать кадры
Записан
burkav
Гость
« Ответ #3 : Август 30, 2006, 11:02 »

Цитата: "Asaphus_Expansus"
А память в обработчике сигналов не течет? Сколько памяти на старте приложение берет и сколько имеет через 20 минут? Так, буквально на всякий случай...


Память не течет - точно. Проверял даже таким образом. В слоте (в гуевом потоке) ставлю одну единственную функцию label->setText(QTime::currentTime().toString("hh:mm:ss:zzz")) - таже самая фигня.

добавлено спустя 2 минуты:

 
Цитата: "Admin"
или еще вариант
если не успевают визуализироватся, то просто пропускать кадры


Тут возникает вопрос: как узнать что не успевает визуализироваться и как пропускать кадры ?
Записан
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #4 : Август 30, 2006, 12:18 »

самый простой спосов флагом

типа
if(!bDraw){
   bDraw=true;

   //draw procedure

   bDraw=false;
}
Записан
burkav
Гость
« Ответ #5 : Август 30, 2006, 18:23 »

Цитата: "Admin"
самый простой спосов флагом

типа
if(!bDraw){
   bDraw=true;

   //draw procedure

   bDraw=false;
}


А что-нибудь не "простое" можете посоветовать ? :-)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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