|
|
@ -1,6 +1,7 @@ |
|
|
|
#include "DelayedSaveManagerImpl.h" |
|
|
|
#include "DelayedSaveManagerImpl.h" |
|
|
|
|
|
|
|
|
|
|
|
DelayedSaveManagerImpl::DelayedSaveManagerImpl() : |
|
|
|
DelayedSaveManagerImpl::DelayedSaveManagerImpl() : |
|
|
|
|
|
|
|
widgetToFocus(nullptr), |
|
|
|
saver(nullptr), |
|
|
|
saver(nullptr), |
|
|
|
lastDataSerialSeen(DelayedSaveManagerImpl::INITIAL_DATA_SERIAL), |
|
|
|
lastDataSerialSeen(DelayedSaveManagerImpl::INITIAL_DATA_SERIAL), |
|
|
|
lastSaveStartedTimestamp(A_VERY_OBSOLETE_TIMESTAMP), |
|
|
|
lastSaveStartedTimestamp(A_VERY_OBSOLETE_TIMESTAMP), |
|
|
@ -21,10 +22,12 @@ bool DelayedSaveManagerImpl::isSaverValid() { |
|
|
|
return saver != nullptr; |
|
|
|
return saver != nullptr; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void DelayedSaveManagerImpl::delayedSave(DATA_SERIAL_TYPE dataSerial, bool focusOnTunnel, std::string tunnelNameToFocus_) { |
|
|
|
void DelayedSaveManagerImpl::delayedSave(bool reloadAfterSave, DATA_SERIAL_TYPE dataSerial, FocusEnum focusOn, std::string tunnelNameToFocus, QWidget* widgetToFocus) { |
|
|
|
if(lastDataSerialSeen==dataSerial)return; |
|
|
|
if(lastDataSerialSeen==dataSerial)return; |
|
|
|
this->focusOnTunnel = focusOnTunnel; |
|
|
|
this->reloadAfterSave = reloadAfterSave; |
|
|
|
tunnelNameToFocus = tunnelNameToFocus_; |
|
|
|
this->focusOn = focusOn; |
|
|
|
|
|
|
|
this->tunnelNameToFocus = tunnelNameToFocus; |
|
|
|
|
|
|
|
this->widgetToFocus = widgetToFocus; |
|
|
|
lastDataSerialSeen=dataSerial; |
|
|
|
lastDataSerialSeen=dataSerial; |
|
|
|
assert(isSaverValid()); |
|
|
|
assert(isSaverValid()); |
|
|
|
TIMESTAMP_TYPE now = getTime(); |
|
|
|
TIMESTAMP_TYPE now = getTime(); |
|
|
@ -42,7 +45,7 @@ bool DelayedSaveManagerImpl::appExiting() { |
|
|
|
exiting=true; |
|
|
|
exiting=true; |
|
|
|
thread->wakeThreadAndJoinThread(); |
|
|
|
thread->wakeThreadAndJoinThread(); |
|
|
|
assert(isSaverValid()); |
|
|
|
assert(isSaverValid()); |
|
|
|
saver->save(false, ""); |
|
|
|
saver->save(false, FocusEnum::noFocus); |
|
|
|
return true; |
|
|
|
return true; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -71,9 +74,10 @@ void DelayedSaveThread::run() { |
|
|
|
assert(saver!=nullptr); |
|
|
|
assert(saver!=nullptr); |
|
|
|
if(saveNow) { |
|
|
|
if(saveNow) { |
|
|
|
saveNow = false; |
|
|
|
saveNow = false; |
|
|
|
const bool focusOnTunnel = delayedSaveManagerImpl->needsFocusOnTunnel(); |
|
|
|
const FocusEnum focusOn = delayedSaveManagerImpl->getFocusOn(); |
|
|
|
const std::string tunnelNameToFocus = delayedSaveManagerImpl->getTunnelNameToFocus(); |
|
|
|
const std::string tunnelNameToFocus = delayedSaveManagerImpl->getTunnelNameToFocus(); |
|
|
|
saver->save(focusOnTunnel, tunnelNameToFocus); |
|
|
|
QWidget* widgetToFocus = delayedSaveManagerImpl->getWidgetToFocus(); |
|
|
|
|
|
|
|
saver->save(delayedSaveManagerImpl->isReloadAfterSave(), focusOn, tunnelNameToFocus, widgetToFocus); |
|
|
|
continue; |
|
|
|
continue; |
|
|
|
} |
|
|
|
} |
|
|
|
if(defer) { |
|
|
|
if(defer) { |
|
|
@ -87,9 +91,10 @@ void DelayedSaveThread::run() { |
|
|
|
if(delayedSaveManagerImpl->isExiting())return; |
|
|
|
if(delayedSaveManagerImpl->isExiting())return; |
|
|
|
continue; |
|
|
|
continue; |
|
|
|
} |
|
|
|
} |
|
|
|
const bool focusOnTunnel = delayedSaveManagerImpl->needsFocusOnTunnel(); |
|
|
|
const FocusEnum focusOn = delayedSaveManagerImpl->getFocusOn(); |
|
|
|
const std::string tunnelNameToFocus = delayedSaveManagerImpl->getTunnelNameToFocus(); |
|
|
|
const std::string tunnelNameToFocus = delayedSaveManagerImpl->getTunnelNameToFocus(); |
|
|
|
saver->save(focusOnTunnel, tunnelNameToFocus); |
|
|
|
QWidget* widgetToFocus = delayedSaveManagerImpl->getWidgetToFocus(); |
|
|
|
|
|
|
|
saver->save(delayedSaveManagerImpl->isReloadAfterSave(), focusOn, tunnelNameToFocus, widgetToFocus); |
|
|
|
break; //break inner loop
|
|
|
|
break; //break inner loop
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
@ -131,10 +136,3 @@ Saver* DelayedSaveManagerImpl::getSaver() { |
|
|
|
return saver; |
|
|
|
return saver; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
bool DelayedSaveManagerImpl::needsFocusOnTunnel() { |
|
|
|
|
|
|
|
return focusOnTunnel; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
std::string& DelayedSaveManagerImpl::getTunnelNameToFocus() { |
|
|
|
|
|
|
|
return tunnelNameToFocus; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|