If zero time is specified, don't try to sleep when using a timer.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@19545 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robin Dunn
2003-03-10 23:38:17 +00:00
parent fb718549cd
commit d8c65cf488

View File

@@ -876,7 +876,7 @@ bool wxShell(const wxString& command)
return wxExecute(cmd, wxEXEC_SYNC) == 0; return wxExecute(cmd, wxEXEC_SYNC) == 0;
} }
// Shutdown or reboot the PC // Shutdown or reboot the PC
bool wxShutdown(wxShutdownFlags wFlags) bool wxShutdown(wxShutdownFlags wFlags)
{ {
#ifdef __WIN32__ #ifdef __WIN32__
@@ -884,27 +884,27 @@ bool wxShutdown(wxShutdownFlags wFlags)
if ( wxGetOsVersion(NULL, NULL) == wxWINDOWS_NT ) // if is NT or 2K if ( wxGetOsVersion(NULL, NULL) == wxWINDOWS_NT ) // if is NT or 2K
{ {
// Get a token for this process. // Get a token for this process.
HANDLE hToken; HANDLE hToken;
bOK = ::OpenProcessToken(GetCurrentProcess(), bOK = ::OpenProcessToken(GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY,
&hToken) != 0; &hToken) != 0;
if ( bOK ) if ( bOK )
{ {
TOKEN_PRIVILEGES tkp; TOKEN_PRIVILEGES tkp;
// Get the LUID for the shutdown privilege. // Get the LUID for the shutdown privilege.
::LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, ::LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,
&tkp.Privileges[0].Luid); &tkp.Privileges[0].Luid);
tkp.PrivilegeCount = 1; // one privilege to set tkp.PrivilegeCount = 1; // one privilege to set
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
// Get the shutdown privilege for this process. // Get the shutdown privilege for this process.
::AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, ::AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,
(PTOKEN_PRIVILEGES)NULL, 0); (PTOKEN_PRIVILEGES)NULL, 0);
// Cannot test the return value of AdjustTokenPrivileges. // Cannot test the return value of AdjustTokenPrivileges.
bOK = ::GetLastError() == ERROR_SUCCESS; bOK = ::GetLastError() == ERROR_SUCCESS;
} }
} }
@@ -927,7 +927,7 @@ bool wxShutdown(wxShutdownFlags wFlags)
return FALSE; return FALSE;
} }
bOK = ::ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE | EWX_REBOOT, 0) != 0; bOK = ::ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE | EWX_REBOOT, 0) != 0;
} }
return bOK; return bOK;
@@ -1108,6 +1108,8 @@ void wxUsleep(unsigned long milliseconds)
#else // !Win32 #else // !Win32
if (gs_inTimer) if (gs_inTimer)
return; return;
if (miliseconds <= 0)
return;
wxTheSleepTimer = new wxSleepTimer; wxTheSleepTimer = new wxSleepTimer;
gs_inTimer = TRUE; gs_inTimer = TRUE;
@@ -1126,6 +1128,8 @@ void wxSleep(int nSecs)
{ {
if (gs_inTimer) if (gs_inTimer)
return; return;
if (nSecs <= 0)
return;
wxTheSleepTimer = new wxSleepTimer; wxTheSleepTimer = new wxSleepTimer;
gs_inTimer = TRUE; gs_inTimer = TRUE;