Как добавить поддержку тайм-аута экрана при запуске приложения qt5.9 на платформе linuxfb? - PullRequest
0 голосов
/ 11 октября 2019

Я использую приложение qt5.9 на платформе imx6slevk с yocto bsp,

Перед запуском приложения я вижу виртуальный терминал на дисплее, и через 10 минут этот экран гаснет, как указано в файле драйверанаходится в Kernel_source> drivers / tty / vt / vt.c

 static int blankinterval = 10*60;

Так же, как этот файл используется для виртуального терминала, файл qlinuxfbscreen.cpp используется приложениями qt, работающими на linuxfb.

Я не нашел ни одного параметра do_screen_blank или do_screen_unblank в этом файле

Все, что я нашел, было этой функцией:

 static void blankScreen(int fd, bool on)
{
 ioctl(fd, FBIOBLANK, on ? VESA_POWERDOWN : VESA_NO_BLANKING);
}

при включении = 1 экран полностью отключается без отображениявообще

Я попытался установить Idleaction в systemd / logind.conf

IdleAction=suspend
IdleActionSec=30Sec

, после этого приложение выключается через 30 секунд, но это происходит, даже если я нажимаю клавиши на матричной клавиатуре,Похоже, systemd не регистрирует нажатие клавиш как активные события, и экран выключается.

Есть ли какие-либо патчи, которые можно применить для включения тайм-аута экрана? Или я могу хотя бы зарегистрировать нажатие клавиши как активное событие в systemd?

1 Ответ

0 голосов
/ 28 октября 2019

Вам нужно изменить ваше приложение qt. Алгоритм будет выглядеть примерно так:

  1. Запустить таймер
  2. Если нажать клавишу, сбросить таймер до максимального значения
  3. Если ни одна клавиша не нажата, вы перейдете в режим ожидания. может использовать:

    system("echo mem > /sys/power/state")

  4. Пробуждение при нажатии клавиши питания.

...