Armadilloフォーラム

QtQuick 2で画面の更新が行われなくなる

fkosu

2017年8月31日 13時48分

お世話になっております。小杉と申します。

Armadillo 840の液晶にQTアプリケーションから表示したQt Quick 2画面の更新が止まってしまうという現象に悩まされております。
止まるまでの時間は一定ではありませんが、数時間で止まってしまいます。
(2時間とか9時間とか。一晩も放置しておけば、確実に止まっています)

状況
新規作成 -> アプリケーション -> QT Quick 2 アプリケーション(ビルドイン要素) にて作成し、
・QT側で値の計算
・QML側で画面の表示
を行う構成です。

・QML側は、タイマー(interval:40)にて、値の取得要求を出し、画面の描画を行う。
・QML側は、setContextPropertyで追加されたオブジェクトを利用し、値の取得等をQT側へ要求する。
・QT側は、必要に応じて処理を行い、emitにて値をQML側に返す。
大雑把な処理内容は、以上になります。
QML側からQT側へ要求し、返ってきた値で描画を行うという形式です。
QT側は要求がない限り、QML側へのアクションを行いません。

画面の更新が行われないだけで、他の処理(タッチ等)は問題なく動作します。
・タッチした際、QT側に音を鳴らすよう要求を出す仕組みにしてあり、音は鳴る。(aplayによるwave再生)
・タッチした際、画像の切り替え(ボタンにタッチした際の切り替え)は行われないが、それに付随したバックライト輝度変更(QMLからQTへの要求)は行われる。(brightnessファイルの更新)

QMLのタイマー処理に入った直後、runningをfalseにし、処理終了直前でtrueにするようにしても状況は変わらず、数時間後に停止していました。
タイマー処理内で、LEDを点灯/消灯させるようにした所、画面の更新が行われない状態担った際、LEDの点灯/消灯が行われていないことから、
タイマー処理が止まっているように見受けられます。

freeの結果を見る限り、メモリー不足というわけではなさそうです。
[root@armadillo840-0 (ttySC2) ~]# free
total used free shared buffers
Mem: 901812 245700 656112 0 2940
-/+ buffers: 242760 659052
Swap: 0 0 0

カーネルは、at21と、at23でテストを行いました。
(at21で発生していたため、at23に更新してみたが、状況に変化はなかった)

以上、何か確認すべき項目等、アドバイスをいただければと思います。