Bug 17782

Summary: В Psi cломалась автоматическая смена статуса...
Product: Sisyphus Reporter: Evgeny Sinelnikov <sin>
Component: psiAssignee: Anton Farygin <rider>
Status: CLOSED NOTABUG QA Contact: qa-sisyphus
Severity: normal    
Priority: P2 CC: erthad, rider
Version: unstable   
Hardware: all   
OS: Linux   

Description Evgeny Sinelnikov 2008-11-04 17:45:29 MSK
Заметил, что последние обновления привели к не работоспособности смены автоматической смены статуса в Psi.

Предварительная проверка показала, что всё вроде бы нормально... Но отладка вывела на странные результаты:
[sin@server src]$ ./psi
Object::connect: No such slot QCA::DirWatch::watcher_changed(QString)
qca-gnupg: patching DirWatch to fix failed connect
PsiCon::createAccount
PsiCon::createAccount
IdlePlatform::secondsIdle start
IdlePlatform::secondsIdle = 1371
PsiAccount::secondsIdle seconds=1, minutes=0
PsiAccount::secondsIdle seconds=1, minutes=0
IdlePlatform::secondsIdle start
IdlePlatform::secondsIdle = 588
PsiAccount::secondsIdle seconds=0, minutes=0
PsiAccount::secondsIdle seconds=0, minutes=0
IdlePlatform::secondsIdle start
IdlePlatform::secondsIdle = 1584
PsiAccount::secondsIdle seconds=1, minutes=0
PsiAccount::secondsIdle seconds=1, minutes=0
IdlePlatform::secondsIdle start
IdlePlatform::secondsIdle = 2587
PsiAccount::secondsIdle seconds=2, minutes=0
PsiAccount::secondsIdle seconds=2, minutes=0
IdlePlatform::secondsIdle start
IdlePlatform::secondsIdle = 3587
PsiAccount::secondsIdle seconds=3, minutes=0
PsiAccount::secondsIdle seconds=3, minutes=0
IdlePlatform::secondsIdle start
IdlePlatform::secondsIdle = 4587
PsiAccount::secondsIdle seconds=4, minutes=0
PsiAccount::secondsIdle seconds=4, minutes=0
IdlePlatform::secondsIdle start
IdlePlatform::secondsIdle = 584
PsiAccount::secondsIdle seconds=0, minutes=0
PsiAccount::secondsIdle seconds=0, minutes=0
IdlePlatform::secondsIdle start
IdlePlatform::secondsIdle = 1587
PsiAccount::secondsIdle seconds=1, minutes=0
PsiAccount::secondsIdle seconds=1, minutes=0
IdlePlatform::secondsIdle start
IdlePlatform::secondsIdle = 2584
PsiAccount::secondsIdle seconds=2, minutes=0
PsiAccount::secondsIdle seconds=2, minutes=0
IdlePlatform::secondsIdle start
IdlePlatform::secondsIdle = 3584
PsiAccount::secondsIdle seconds=3, minutes=0
PsiAccount::secondsIdle seconds=3, minutes=0
IdlePlatform::secondsIdle start
IdlePlatform::secondsIdle = 4584
PsiAccount::secondsIdle seconds=4, minutes=0
PsiAccount::secondsIdle seconds=4, minutes=0
IdlePlatform::secondsIdle start
IdlePlatform::secondsIdle = 584
PsiAccount::secondsIdle seconds=0, minutes=0
PsiAccount::secondsIdle seconds=0, minutes=0
IdlePlatform::secondsIdle start
IdlePlatform::secondsIdle = 1584

Получается, что в методе IdlePlatform::secondsIdle() (из idle_x11.cpp) должны получаться секунды из миллисекунд, а ему приходит время непонятно почему кратное 5 миллисекундам...

Не могу понять в чём дело... То ли это особенность новых иксов, то ли настройка такая... В общем всё упёрлось в недра иксов:
XScreenSaverQueryInfo(QApplication::desktop()->screen()->x11Display(), QX11Info::appRootWindow(), d->ss_info)
откуда приходит это самое время простоя приложения в поле idle cтруктуры XScreenSaverInfo.
Comment 1 Anton Farygin 2008-11-04 19:38:53 MSK
Странно, но у меня работает. Да и psi уже давным давно не обновлялся. 
Видимо, что-то отломали где-то в другом месте.
Comment 2 Anton Farygin 2008-11-26 11:28:25 MSK
проверяем новую версию...
Comment 3 Evgeny Sinelnikov 2009-01-16 02:43:12 MSK
Проверял по-разному... то работает, то нет... Вообще похоже на проблемы иксы... Как видно из дебага, именно от туда странные события приходят... Хотя может такое использование иксов просто не корреткно... И, возможно, статус нужно отслеживать иначе...
Comment 4 Anton Farygin 2009-01-16 02:47:33 MSK
Ещё более странно - работает не только у меня ;)

Последняя версия, сизиф, KDE. 
Comment 5 Evgeny Sinelnikov 2009-01-16 03:07:55 MSK
(In reply to comment #4)
> Ещё более странно - работает не только у меня ;)
> 

У меня тоже... иногда работает...

> Последняя версия, сизиф, KDE. 
> 

Я думаю, что XScreenSaverQueryInfo() очевидно зависит от настройки screen saver'а, а следовательно использовать этот метод для отслеживания статуса может быть не всегда корректно... И версии тут уже не причём... 
Comment 6 Anton Farygin 2009-01-16 03:21:38 MSK
По идее, XScreenSaverAllocInfo и XScreenSaverQueryInfo не должны зависить от настройки ScreenSaver'а в X'ах.

А вот xset может реально влиять, это надо проверить.

Способ, выбранный авторами psi - весьма удобен. Тики сбрасываются на ноль при любом вводе в иксах.
Comment 7 Anton Farygin 2009-03-03 09:43:37 MSK
Закрываю как "не баг".