summaryrefslogtreecommitdiffstats
path: root/base/win
diff options
context:
space:
mode:
authortommi@chromium.org <tommi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-10-17 15:39:38 +0000
committertommi@chromium.org <tommi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-10-17 15:39:38 +0000
commit68a1a1828ae9b4dafe074477225e7f1196699d03 (patch)
treefb10a0bfad8b19f25e0a3e2046d3364c64f5e030 /base/win
parentdc0f37f22f819d92c36534199922b606891c1c4a (diff)
downloadchromium_src-68a1a1828ae9b4dafe074477225e7f1196699d03.zip
chromium_src-68a1a1828ae9b4dafe074477225e7f1196699d03.tar.gz
chromium_src-68a1a1828ae9b4dafe074477225e7f1196699d03.tar.bz2
Support MTA as well in the scoped COM initializer.
BUG=none Review URL: http://codereview.chromium.org/8275030 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@105811 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/win')
-rw-r--r--base/win/scoped_com_initializer.h17
1 files changed, 16 insertions, 1 deletions
diff --git a/base/win/scoped_com_initializer.h b/base/win/scoped_com_initializer.h
index e7e3b4ac..0ea5199 100644
--- a/base/win/scoped_com_initializer.h
+++ b/base/win/scoped_com_initializer.h
@@ -16,18 +16,29 @@
namespace base {
namespace win {
-// Initializes COM in the constructor (STA), and uninitializes COM in the
+// Initializes COM in the constructor (STA or MTA), and uninitializes COM in the
// destructor.
class ScopedCOMInitializer {
public:
+ // Enum value provided to initialize the thread as an MTA instead of STA.
+ enum SelectMTA { kMTA };
+
+ // Constructor for STA initialization.
ScopedCOMInitializer() : hr_(CoInitialize(NULL)) {
}
+ // Constructor for MTA initialization.
+ explicit ScopedCOMInitializer(SelectMTA mta)
+ : hr_(CoInitializeEx(NULL, COINIT_MULTITHREADED)) {
+ }
+
ScopedCOMInitializer::~ScopedCOMInitializer() {
if (SUCCEEDED(hr_))
CoUninitialize();
}
+ bool succeeded() const { return SUCCEEDED(hr_); }
+
private:
HRESULT hr_;
@@ -45,9 +56,13 @@ namespace win {
// Do-nothing class for other platforms.
class ScopedCOMInitializer {
public:
+ enum SelectMTA { kMTA };
ScopedCOMInitializer() {}
+ explicit ScopedCOMInitializer(SelectMTA mta) {}
~ScopedCOMInitializer() {}
+ bool succeeded() const { return true; }
+
private:
DISALLOW_COPY_AND_ASSIGN(ScopedCOMInitializer);
};