mirror of
https://github.com/reactos/reactos.git
synced 2024-12-28 01:55:19 +00:00
[EXPLORER] Fix Windows XP compatibility (#4923)
CORE-18694
It regressed by 0.4.15-dev-4596-g 1aa95f3897
This commit is contained in:
parent
e316d61215
commit
feff2b1e6c
1 changed files with 7 additions and 3 deletions
|
@ -26,6 +26,7 @@ private:
|
||||||
CComPtr<ITrayWindow> m_Tray;
|
CComPtr<ITrayWindow> m_Tray;
|
||||||
HANDLE m_hInitEvent;
|
HANDLE m_hInitEvent;
|
||||||
HANDLE m_hThread;
|
HANDLE m_hThread;
|
||||||
|
DWORD m_ThreadId;
|
||||||
|
|
||||||
DWORD DesktopThreadProc();
|
DWORD DesktopThreadProc();
|
||||||
static DWORD WINAPI s_DesktopThreadProc(LPVOID lpParameter);
|
static DWORD WINAPI s_DesktopThreadProc(LPVOID lpParameter);
|
||||||
|
@ -43,7 +44,8 @@ public:
|
||||||
CDesktopThread::CDesktopThread():
|
CDesktopThread::CDesktopThread():
|
||||||
m_Tray(NULL),
|
m_Tray(NULL),
|
||||||
m_hInitEvent(NULL),
|
m_hInitEvent(NULL),
|
||||||
m_hThread(NULL)
|
m_hThread(NULL),
|
||||||
|
m_ThreadId(0)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -68,7 +70,7 @@ HRESULT CDesktopThread::Initialize(ITrayWindow* pTray)
|
||||||
}
|
}
|
||||||
|
|
||||||
m_Tray = pTray;
|
m_Tray = pTray;
|
||||||
m_hThread = CreateThread(NULL, 0, s_DesktopThreadProc, (LPVOID)this, 0, NULL);
|
m_hThread = CreateThread(NULL, 0, s_DesktopThreadProc, (LPVOID)this, 0, &m_ThreadId);
|
||||||
|
|
||||||
if (!m_hThread)
|
if (!m_hThread)
|
||||||
{
|
{
|
||||||
|
@ -99,6 +101,7 @@ HRESULT CDesktopThread::Initialize(ITrayWindow* pTray)
|
||||||
{
|
{
|
||||||
CloseHandle(m_hThread);
|
CloseHandle(m_hThread);
|
||||||
m_hThread = NULL;
|
m_hThread = NULL;
|
||||||
|
m_ThreadId = 0;
|
||||||
|
|
||||||
CloseHandle(m_hInitEvent);
|
CloseHandle(m_hInitEvent);
|
||||||
m_hInitEvent = NULL;
|
m_hInitEvent = NULL;
|
||||||
|
@ -119,12 +122,13 @@ void CDesktopThread::Destroy()
|
||||||
if (WaitResult == WAIT_TIMEOUT)
|
if (WaitResult == WAIT_TIMEOUT)
|
||||||
{
|
{
|
||||||
/* Send WM_QUIT message to the thread and wait for it to terminate */
|
/* Send WM_QUIT message to the thread and wait for it to terminate */
|
||||||
PostThreadMessageW(GetThreadId(m_hThread), WM_QUIT, 0, 0);
|
PostThreadMessageW(m_ThreadId, WM_QUIT, 0, 0);
|
||||||
WaitForSingleObject(m_hThread, INFINITE);
|
WaitForSingleObject(m_hThread, INFINITE);
|
||||||
}
|
}
|
||||||
|
|
||||||
CloseHandle(m_hThread);
|
CloseHandle(m_hThread);
|
||||||
m_hThread = NULL;
|
m_hThread = NULL;
|
||||||
|
m_ThreadId = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_hInitEvent)
|
if (m_hInitEvent)
|
||||||
|
|
Loading…
Reference in a new issue