mirror of
https://github.com/reactos/reactos.git
synced 2024-12-27 09:34:43 +00:00
terminate shell service objects thread if there is nothing to do
svn path=/trunk/; revision=14434
This commit is contained in:
parent
5875f60018
commit
45ba821ec5
1 changed files with 19 additions and 17 deletions
|
@ -66,29 +66,31 @@ int SSOThread::Run()
|
|||
RegCloseKey(hkey);
|
||||
}
|
||||
|
||||
MSG msg;
|
||||
|
||||
while(_alive) {
|
||||
if (MsgWaitForMultipleObjects(1, &_evtFinish, FALSE, INFINITE, QS_ALLINPUT) == WAIT_OBJECT_0+0)
|
||||
break; // _evtFinish has been set.
|
||||
if (!sso_ptrs.empty()) {
|
||||
MSG msg;
|
||||
|
||||
while(_alive) {
|
||||
if (!PeekMessage(&msg, 0, 0, 0, PM_REMOVE))
|
||||
break;
|
||||
if (MsgWaitForMultipleObjects(1, &_evtFinish, FALSE, INFINITE, QS_ALLINPUT) == WAIT_OBJECT_0+0)
|
||||
break; // _evtFinish has been set.
|
||||
|
||||
if (msg.message == WM_QUIT)
|
||||
break;
|
||||
while(_alive) {
|
||||
if (!PeekMessage(&msg, 0, 0, 0, PM_REMOVE))
|
||||
break;
|
||||
|
||||
TranslateMessage(&msg);
|
||||
DispatchMessage(&msg);
|
||||
if (msg.message == WM_QUIT)
|
||||
break;
|
||||
|
||||
TranslateMessage(&msg);
|
||||
DispatchMessage(&msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// shutdown all running Shell Service Objects
|
||||
for(SSOVector::iterator it=sso_ptrs.begin(); it!=sso_ptrs.end(); ++it) {
|
||||
SIfacePtr<IOleCommandTarget>* sso_ptr = *it;
|
||||
(*sso_ptr)->Exec(&CGID_ShellServiceObject, OLECMDID_SAVE, OLECMDEXECOPT_DODEFAULT, NULL, NULL);
|
||||
delete sso_ptr;
|
||||
// shutdown all running Shell Service Objects
|
||||
for(SSOVector::iterator it=sso_ptrs.begin(); it!=sso_ptrs.end(); ++it) {
|
||||
SIfacePtr<IOleCommandTarget>* sso_ptr = *it;
|
||||
(*sso_ptr)->Exec(&CGID_ShellServiceObject, OLECMDID_SAVE, OLECMDEXECOPT_DODEFAULT, NULL, NULL);
|
||||
delete sso_ptr;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
Loading…
Reference in a new issue