kopia lustrzana https://github.com/jamescoxon/dl-fldigi
Exit processing
* Fixed failure to close ARQ server thread on Win32 * Added shutdown event loggingpull/4/head
rodzic
52505ee648
commit
4841f1098d
|
@ -1273,59 +1273,73 @@ void remove_windows()
|
||||||
if (scopeview) {
|
if (scopeview) {
|
||||||
scopeview->hide();
|
scopeview->hide();
|
||||||
delete scopeview;
|
delete scopeview;
|
||||||
|
scopeview = 0;
|
||||||
}
|
}
|
||||||
if (dlgViewer) {
|
if (dlgViewer) {
|
||||||
dlgViewer->hide();
|
dlgViewer->hide();
|
||||||
delete dlgViewer;
|
delete dlgViewer;
|
||||||
|
dlgViewer = 0;
|
||||||
}
|
}
|
||||||
if (dlgLogbook) {
|
if (dlgLogbook) {
|
||||||
dlgLogbook->hide();
|
dlgLogbook->hide();
|
||||||
delete dlgLogbook;
|
delete dlgLogbook;
|
||||||
|
dlgLogbook = 0;
|
||||||
}
|
}
|
||||||
if (dlgConfig) {
|
if (dlgConfig) {
|
||||||
dlgConfig->hide();
|
dlgConfig->hide();
|
||||||
delete cboHamlibRig;
|
delete cboHamlibRig; // ??
|
||||||
delete dlgConfig;
|
delete dlgConfig;
|
||||||
|
dlgConfig = 0;
|
||||||
}
|
}
|
||||||
if (font_browser) {
|
if (font_browser) {
|
||||||
font_browser->hide();
|
font_browser->hide();
|
||||||
delete font_browser;
|
delete font_browser;
|
||||||
|
font_browser = 0;
|
||||||
}
|
}
|
||||||
if (notify_window) {
|
if (notify_window) {
|
||||||
notify_window->hide();
|
notify_window->hide();
|
||||||
delete notify_window;
|
delete notify_window;
|
||||||
|
notify_window = 0;
|
||||||
}
|
}
|
||||||
if (dxcc_window) {
|
if (dxcc_window) {
|
||||||
dxcc_window->hide();
|
dxcc_window->hide();
|
||||||
delete dxcc_window;
|
delete dxcc_window;
|
||||||
|
dxcc_window = 0;
|
||||||
}
|
}
|
||||||
if (picRxWin) {
|
if (picRxWin) {
|
||||||
picRxWin->hide();
|
picRxWin->hide();
|
||||||
delete picRxWin;
|
delete picRxWin;
|
||||||
|
picRxWin = 0;
|
||||||
}
|
}
|
||||||
if (picTxWin) {
|
if (picTxWin) {
|
||||||
picTxWin->hide();
|
picTxWin->hide();
|
||||||
delete picTxWin;
|
delete picTxWin;
|
||||||
|
picTxWin = 0;
|
||||||
}
|
}
|
||||||
if (fsqpicRxWin){
|
if (fsqpicRxWin){
|
||||||
fsqpicRxWin->hide();
|
fsqpicRxWin->hide();
|
||||||
delete fsqpicRxWin;
|
delete fsqpicRxWin;
|
||||||
|
fsqpicRxWin = 0;
|
||||||
}
|
}
|
||||||
if (fsqpicTxWin){
|
if (fsqpicTxWin){
|
||||||
fsqpicTxWin->hide();
|
fsqpicTxWin->hide();
|
||||||
delete fsqpicTxWin;
|
delete fsqpicTxWin;
|
||||||
|
fsqpicTxWin = 0;
|
||||||
}
|
}
|
||||||
if (ifkppicRxWin){
|
if (ifkppicRxWin){
|
||||||
ifkppicRxWin->hide();
|
ifkppicRxWin->hide();
|
||||||
delete ifkppicRxWin;
|
delete ifkppicRxWin;
|
||||||
|
ifkppicRxWin = 0;
|
||||||
}
|
}
|
||||||
if (ifkppicTxWin){
|
if (ifkppicTxWin){
|
||||||
ifkppicTxWin->hide();
|
ifkppicTxWin->hide();
|
||||||
delete ifkppicTxWin;
|
delete ifkppicTxWin;
|
||||||
|
ifkppicTxWin = 0;
|
||||||
}
|
}
|
||||||
if (thorpicRxWin){
|
if (thorpicRxWin){
|
||||||
thorpicRxWin->hide();
|
thorpicRxWin->hide();
|
||||||
delete thorpicRxWin;
|
delete thorpicRxWin;
|
||||||
|
thorpicRxWin = 0;
|
||||||
}
|
}
|
||||||
if (thorpicTxWin){
|
if (thorpicTxWin){
|
||||||
thorpicTxWin->hide();
|
thorpicTxWin->hide();
|
||||||
|
@ -1334,35 +1348,35 @@ void remove_windows()
|
||||||
if (wefax_pic_rx_win) {
|
if (wefax_pic_rx_win) {
|
||||||
wefax_pic_rx_win->hide();
|
wefax_pic_rx_win->hide();
|
||||||
delete wefax_pic_rx_win;
|
delete wefax_pic_rx_win;
|
||||||
|
wefax_pic_rx_win = 0;
|
||||||
}
|
}
|
||||||
if (wefax_pic_tx_win) {
|
if (wefax_pic_tx_win) {
|
||||||
wefax_pic_tx_win->hide();
|
wefax_pic_tx_win->hide();
|
||||||
delete wefax_pic_tx_win;
|
delete wefax_pic_tx_win;
|
||||||
|
wefax_pic_tx_win = 0;
|
||||||
}
|
}
|
||||||
if (wExport) {
|
if (wExport) {
|
||||||
wExport->hide();
|
wExport->hide();
|
||||||
delete wExport;
|
delete wExport;
|
||||||
|
wExport = 0;
|
||||||
}
|
}
|
||||||
if (wCabrillo) {
|
if (wCabrillo) {
|
||||||
wCabrillo->hide();
|
wCabrillo->hide();
|
||||||
delete wCabrillo;
|
delete wCabrillo;
|
||||||
|
wCabrillo = 0;
|
||||||
}
|
}
|
||||||
if (MacroEditDialog) {
|
if (MacroEditDialog) {
|
||||||
MacroEditDialog->hide();
|
MacroEditDialog->hide();
|
||||||
delete MacroEditDialog;
|
delete MacroEditDialog;
|
||||||
|
MacroEditDialog = 0;
|
||||||
}
|
}
|
||||||
if (fsqMonitor) {
|
if (fsqMonitor) {
|
||||||
fsqMonitor->hide();
|
fsqMonitor->hide();
|
||||||
delete fsqMonitor;
|
delete fsqMonitor;
|
||||||
|
fsqMonitor = 0;
|
||||||
}
|
}
|
||||||
tgroup->hide_all();
|
tgroup->hide_all();
|
||||||
|
|
||||||
// if (fsqDebug) {
|
|
||||||
// fsqDebug->hide();
|
|
||||||
// delete fsqDebug;
|
|
||||||
// }
|
|
||||||
|
|
||||||
debug::stop();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// callback executed from Escape / Window decoration 'X' or OS X cmd-Q
|
// callback executed from Escape / Window decoration 'X' or OS X cmd-Q
|
||||||
|
@ -1372,6 +1386,14 @@ void remove_windows()
|
||||||
// Lion also does not allow any dialog other than the main dialog to
|
// Lion also does not allow any dialog other than the main dialog to
|
||||||
// remain open after a Red-X exit
|
// remain open after a Red-X exit
|
||||||
|
|
||||||
|
void noop()
|
||||||
|
{
|
||||||
|
FILE *exitlog = fopen(string(HomeDir).append("status_log.txt").c_str(), "a");
|
||||||
|
fprintf(exitlog,"\n=========================\nfltk called terminate\n=========================\n");
|
||||||
|
fclose(exitlog);
|
||||||
|
exit(128 + SIGABRT);
|
||||||
|
}
|
||||||
|
|
||||||
void cb_wMain(Fl_Widget*, void*)
|
void cb_wMain(Fl_Widget*, void*)
|
||||||
{
|
{
|
||||||
#ifdef __APPLE__
|
#ifdef __APPLE__
|
||||||
|
@ -1384,6 +1406,8 @@ void cb_wMain(Fl_Widget*, void*)
|
||||||
if (!clean_exit(true)) return;
|
if (!clean_exit(true)) return;
|
||||||
#endif
|
#endif
|
||||||
remove_windows(); // more Apple Lion madness
|
remove_windows(); // more Apple Lion madness
|
||||||
|
|
||||||
|
std::set_terminate(noop);
|
||||||
fl_digi_main->hide();
|
fl_digi_main->hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1391,8 +1415,10 @@ void cb_wMain(Fl_Widget*, void*)
|
||||||
void cb_E(Fl_Menu_*, void*) {
|
void cb_E(Fl_Menu_*, void*) {
|
||||||
if (!clean_exit(true))
|
if (!clean_exit(true))
|
||||||
return;
|
return;
|
||||||
remove_windows();
|
|
||||||
// this will make Fl::run return
|
remove_windows(); // more Apple Lion madness
|
||||||
|
|
||||||
|
std::set_terminate(noop);
|
||||||
fl_digi_main->hide();
|
fl_digi_main->hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -789,13 +789,14 @@ void exit_process() {
|
||||||
if (progdefaults.usepskrep)
|
if (progdefaults.usepskrep)
|
||||||
pskrep_stop();
|
pskrep_stop();
|
||||||
|
|
||||||
|
LOG_INFO("Detach/delete qrunner threads");
|
||||||
for (int i = 0; i < NUM_QRUNNER_THREADS; i++) {
|
for (int i = 0; i < NUM_QRUNNER_THREADS; i++) {
|
||||||
|
LOG_INFO("thread %d", i);
|
||||||
cbq[i]->detach();
|
cbq[i]->detach();
|
||||||
delete cbq[i];
|
delete cbq[i];
|
||||||
}
|
}
|
||||||
|
LOG_INFO("FSEL::destroy()");
|
||||||
FSEL::destroy();
|
FSEL::destroy();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void generate_option_help(void) {
|
void generate_option_help(void) {
|
||||||
|
|
|
@ -528,12 +528,10 @@ bool ARQ_SOCKET_Server::start(const char* node, const char* service)
|
||||||
|
|
||||||
void ARQ_SOCKET_Server::stop(void)
|
void ARQ_SOCKET_Server::stop(void)
|
||||||
{
|
{
|
||||||
// FILEME - uncomment when we have an ARQ_SOCKET_Server than can be
|
if (!inst)
|
||||||
// interrupted
|
return;
|
||||||
// if (!inst)
|
delete inst;
|
||||||
// return;
|
inst = 0;
|
||||||
// delete inst;
|
|
||||||
// inst = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void* ARQ_SOCKET_Server::thread_func(void*)
|
void* ARQ_SOCKET_Server::thread_func(void*)
|
||||||
|
|
|
@ -169,6 +169,7 @@ void debug::stop(void)
|
||||||
if (window) {
|
if (window) {
|
||||||
window->hide();
|
window->hide();
|
||||||
delete window;
|
delete window;
|
||||||
|
window = 0;
|
||||||
}
|
}
|
||||||
if (inst) {
|
if (inst) {
|
||||||
delete inst;
|
delete inst;
|
||||||
|
|
Ładowanie…
Reference in New Issue