Browse Source

Remove windows shutdown old hack. Fixes the waiting time on close for windows platforms.

QGC4.4
Stefan Dunca 6 years ago
parent
commit
f4e022e7d2
  1. 33
      src/ui/MainRootWindow.qml

33
src/ui/MainRootWindow.qml

@ -181,43 +181,15 @@ ApplicationWindow {
} }
} }
//-------------------------------------------------------------------------
//-- Weird hack that has to be fixed elsewhere and have this removed
property bool _forceClose: false property bool _forceClose: false
function reallyClose() {
_forceClose = true
mainWindow.close()
}
function finishCloseProcess() { function finishCloseProcess() {
if(ScreenTools.isWindows) { if(ScreenTools.isWindows) {
hide() hide()
} }
QGroundControl.linkManager.shutdown() QGroundControl.linkManager.shutdown()
// The above shutdown causes a flurry of activity as the vehicle components are removed. This in turn _forceClose = true
// causes the Windows Version of Qt to crash if you allow the close event to be accepted. In order to prevent mainWindow.close()
// the crash, we ignore the close event and setup a delayed timer to close the window after things settle down.
if(ScreenTools.isWindows) {
delayedWindowCloseTimer.start()
} else {
reallyClose()
}
}
Timer {
id: delayedWindowCloseTimer
interval: 1500
running: false
repeat: false
onTriggered: {
reallyClose()
if(ScreenTools.isWindows) {
// Closing the app while main is hidden doesn't work
Qt.callLater(Qt.quit)
}
}
} }
MessageDialog { MessageDialog {
@ -241,6 +213,7 @@ ApplicationWindow {
//-- Check for unsaved missions //-- Check for unsaved missions
onClosing: { onClosing: {
// Check first for unsaved missions and active connections
if (!_forceClose) { if (!_forceClose) {
unsavedMissionCloseDialog.check() unsavedMissionCloseDialog.check()
close.accepted = false close.accepted = false

Loading…
Cancel
Save