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:
@@ -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;
|
||||||
|
Reference in New Issue
Block a user