| Index: base/win/scoped_com_initializer.h
|
| ===================================================================
|
| --- base/win/scoped_com_initializer.h (revision 105060)
|
| +++ base/win/scoped_com_initializer.h (working copy)
|
| @@ -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 @@
|
| // 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);
|
| };
|
|
|