Открих, че моето приложение консумира все повече и повече мощност на процесора във времето, когато правя извикващ update() SLOT на няколко QQuickWindows.
Ето една проста тестова програма:
import QtQuick 2.3
import QtQuick.Controls 1.2
import QtQuick.Window 2.2
ApplicationWindow {visible: true; width: 640; height: 480;
Window{ height: 100; width: 100; visible: true; objectName: "w1"; id:w1; }
Window{ height: 100; width: 100; visible: true; objectName: "w2"; id:w2; }
Window{ height: 100; width: 100; visible: true; objectName: "w3"; id:w3; }
Timer {
interval: 30
repeat: true
running: true
onTriggered: {
w1.update();
w2.update();
w3.update();
}
}
}
Ако презаредя напълно QQuickWindows с Loader
, всичко се нулира и натоварването на процесора започва да се увеличава от самото начало.
Този проблем е тестван със следните две системи:
Ubuntu 12.04 + Qt5.4.2 + intel_video + видеодрайвер с отворен код
Ubuntu14.04 + Qt5.3.2 + radeon_video + видеодрайвер с отворен код
Имам нужда от бързо решение за това!!! Вече се опитах периодично да извиквам releaseResources()
метод и resetOpenGLState()
метод на QQuickWindow
.
СЪЩО много интересно е, че когато прилагам putenv("LIBGL_ALWAYS_SOFTWARE=1")
в моя main.cpp
, този проблем изчезва и имам ПОСТОЯННО ниско използване на процесора. Но в моето реално приложение имам нужда от хардуерно изобразяване, така че това не е опция за мен.
Може ли някой да тества този проблем или да ми даде съвет?