Здравствуйте!
Имею следующую проблему. На неком устройстве запускается QtEmbedded приложение. В целях сохранения батареи есть необходимость переводить устройство в suspend режим. Соответсвенно в коде есть таймер который пытается перевести систему в это состояние:
void MApplication::suspendSystem() {
qDebug() << "MApplication::suspendSystem. Invoke.";
qDebug() << "MApplication::suspendSystem. Suspending system.";
QFile powerStateFile("/sys/power/state");
if( !powerStateFile.open(QIODevice::ReadWrite | QIODevice::Text | QIODevice::Truncate)) {
qWarning()<<"File not opened";
} else {
QTextStream out(&powerStateFile);
out << "mem";
powerStateFile.close();
}
qDebug() << "MApplication::suspendSystem. Restoring system.";
QApplication::instance()->processEvents(QEventLoop::AllEvents | QEventLoop::WaitForMoreEvents);
qDebug() << "MApplication::suspendSystem. Finish.";
// start timer again
QTimer::singleShot(1*60*1000, this, SLOT(suspendSystem()));
}
А проблема заключается в том, что устройство засыпает, но при пробуждении qt приложение перестает вести себя адекватно. Т.е. оно перестает получать ввод с клавиатуры, сбиваются таймеры (даже таймер суспенда сначала работает раз в минуту, а потом может и раз в 10 минут сработать) и.д.
PS
Да, забыл сказать, что suspend системы работает. Раньше на железяке крутилось другое приложение под nano-X и тогда с засыпанием проблем небыло.