mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-25 10:58:52 +00:00
Move OS specific code to proper place. Also make sure that no other
handler functions are called after processing shutdown events. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@31027 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
8e4bc22b28
commit
50fa5f24d3
19
src/LyX.cpp
19
src/LyX.cpp
@ -71,9 +71,6 @@
|
||||
#include <stdlib.h>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#if defined(_WIN32) || defined(__CYGWIN__)
|
||||
#include <windows.h>
|
||||
#endif
|
||||
|
||||
using namespace std;
|
||||
using namespace lyx::support;
|
||||
@ -653,18 +650,6 @@ 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
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -686,10 +671,6 @@ 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();
|
||||
|
@ -123,15 +123,31 @@ string convert_path_list(string const & p, PathStyle const & target)
|
||||
return subst(p, '\\', '/');
|
||||
}
|
||||
|
||||
|
||||
BOOL terminate_handler(DWORD event)
|
||||
{
|
||||
if (event == CTRL_CLOSE_EVENT
|
||||
|| event == CTRL_LOGOFF_EVENT
|
||||
|| event == CTRL_SHUTDOWN_EVENT) {
|
||||
::raise(SIGTERM);
|
||||
// Relinquish our time slice.
|
||||
sleep(0);
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
} // namespace anon
|
||||
|
||||
void init(int, char *[])
|
||||
{
|
||||
// Make sure that the TEMP variable is set
|
||||
// and sync the Windows environment.
|
||||
|
||||
setenv("TEMP", "/tmp", false);
|
||||
cygwin_internal(CW_SYNC_WINENV);
|
||||
|
||||
// Catch shutdown events.
|
||||
SetConsoleCtrlHandler((PHANDLER_ROUTINE)terminate_handler, TRUE);
|
||||
}
|
||||
|
||||
|
||||
|
@ -26,6 +26,7 @@
|
||||
|
||||
#include "support/lassert.h"
|
||||
|
||||
#include <csignal>
|
||||
#include <cstdlib>
|
||||
#include <vector>
|
||||
|
||||
@ -80,6 +81,19 @@ bool windows_style_tex_paths_ = true;
|
||||
|
||||
string cygdrive = "/cygdrive";
|
||||
|
||||
BOOL terminate_handler(DWORD event)
|
||||
{
|
||||
if (event == CTRL_CLOSE_EVENT
|
||||
|| event == CTRL_LOGOFF_EVENT
|
||||
|| event == CTRL_SHUTDOWN_EVENT) {
|
||||
::raise(SIGTERM);
|
||||
// Relinquish our time slice.
|
||||
Sleep(0);
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
} // namespace anon
|
||||
|
||||
void init(int /* argc */, char * argv[])
|
||||
@ -161,6 +175,9 @@ void init(int /* argc */, char * argv[])
|
||||
if ((retVal == ERROR_SUCCESS) && (bufSize <= MAX_PATH))
|
||||
cygdrive = rtrim(string(buf), "/");
|
||||
}
|
||||
|
||||
// Catch shutdown events.
|
||||
SetConsoleCtrlHandler((PHANDLER_ROUTINE)terminate_handler, TRUE);
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user