From: Enrico Forestieri Date: Thu, 13 Aug 2009 13:55:26 +0000 (+0000) Subject: Fix the dataloss problem when shutting down Windows (part of bug #5525). X-Git-Tag: 2.0.0~5754 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=945dad51bf80b1a66f4b851508c4dbab1cbbc8e6;p=features.git Fix the dataloss problem when shutting down Windows (part of bug #5525). git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@31006 a592a061-630c-0410-9148-cb99ea01b6c8 --- diff --git a/src/LyX.cpp b/src/LyX.cpp index e2e5b0c925..b7a409fedb 100644 --- a/src/LyX.cpp +++ b/src/LyX.cpp @@ -71,6 +71,9 @@ #include #include #include +#if defined(_WIN32) || defined(__CYGWIN__) +#include +#endif using namespace std; using namespace lyx::support; @@ -650,6 +653,18 @@ static void error_handler(int err_sig) exit(0); } + +#if defined(_WIN32) || defined(__CYGWIN__) +BOOL terminate_handler(DWORD event) +{ + if (event == CTRL_CLOSE_EVENT + || event == CTRL_LOGOFF_EVENT + || event == CTRL_SHUTDOWN_EVENT) + raise(SIGTERM); + return FALSE; +} +#endif + } @@ -671,6 +686,10 @@ bool LyX::init() signal(SIGINT, error_handler); signal(SIGTERM, error_handler); // SIGPIPE can be safely ignored. +#if defined(_WIN32) || defined(__CYGWIN__) + // On Windows we have also to catch logging off or closing the console. + SetConsoleCtrlHandler((PHANDLER_ROUTINE)terminate_handler, TRUE); +#endif lyxrc.tempdir_path = package().temp_dir().absFilename(); lyxrc.document_path = package().document_dir().absFilename();