terminate shell service objects thread if there is nothing to do
Modified:
trunk/reactos/subsys/system/explorer/services/shellservices.cpp
_____
Modified:
trunk/reactos/subsys/system/explorer/services/shellservices.cpp
--- trunk/reactos/subsys/system/explorer/services/shellservices.cpp
2005-04-02 05:43:37 UTC (rev 14433)
+++ trunk/reactos/subsys/system/explorer/services/shellservices.cpp
2005-04-02 10:48:16 UTC (rev 14434)
@@ -66,29 +66,31 @@
RegCloseKey(hkey);
}
- MSG msg;
+ if (!sso_ptrs.empty()) {
+ MSG msg;
- while(_alive) {
- if (MsgWaitForMultipleObjects(1, &_evtFinish, FALSE,
INFINITE, QS_ALLINPUT) == WAIT_OBJECT_0+0)
- break; // _evtFinish has been set.
-
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;
Show replies by date