diff options
author | pkasting@chromium.org <pkasting@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-10-03 17:14:48 +0000 |
---|---|---|
committer | pkasting@chromium.org <pkasting@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-10-03 17:14:48 +0000 |
commit | 451fd90d924b6fd4e6f208952b525cab2029cd6d (patch) | |
tree | 6cf9bec9c237224f6d70de9ea5c1cee7d31cd63f /chrome_frame/utils.h | |
parent | 748d7a09fe3c109b5a829ebabdc97edd347f42e6 (diff) | |
download | chromium_src-451fd90d924b6fd4e6f208952b525cab2029cd6d.zip chromium_src-451fd90d924b6fd4e6f208952b525cab2029cd6d.tar.gz chromium_src-451fd90d924b6fd4e6f208952b525cab2029cd6d.tar.bz2 |
Use ScopedCOMInitializer in more places. While this doesn't always simplify code, it does mean we do consistent logging and error-checking at all these sites.
BUG=none
TEST=none
Review URL: https://codereview.chromium.org/11050009
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@159908 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome_frame/utils.h')
-rw-r--r-- | chrome_frame/utils.h | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/chrome_frame/utils.h b/chrome_frame/utils.h index a741b65..389a8f5 100644 --- a/chrome_frame/utils.h +++ b/chrome_frame/utils.h @@ -17,6 +17,7 @@ #include "base/metrics/histogram.h" #include "base/string16.h" #include "base/threading/thread.h" +#include "base/win/scoped_com_initializer.h" #include "base/win/scoped_comptr.h" #include "googleurl/src/gurl.h" #include "ui/gfx/rect.h" @@ -399,22 +400,26 @@ STDMETHODIMP QueryInterfaceIfDelegateSupports(void* obj, REFIID iid, class STAThread : public base::Thread { public: explicit STAThread(const char *name) : Thread(name) {} - ~STAThread() { + virtual ~STAThread() { Stop(); } + bool Start() { return StartWithOptions(Options(MessageLoop::TYPE_UI, 0)); } - protected: - // Called just prior to starting the message loop - virtual void Init() { - ::CoInitialize(0); + + private: + virtual void Init() OVERRIDE { + com_initializer_.reset(new base::win::ScopedCOMInitializer()); } - // Called just after the message loop ends - virtual void CleanUp() { - ::CoUninitialize(); + virtual void CleanUp() OVERRIDE { + com_initializer_.reset(); } + + scoped_ptr<base::win::ScopedCOMInitializer> com_initializer_; + + DISALLOW_COPY_AND_ASSIGN(STAThread); }; std::wstring GuidToString(const GUID& guid); |