1 /*
2  * Copyright 2011 Google Inc.
3  *
4  * Use of this source code is governed by a BSD-style license that can be
5  * found in the LICENSE file.
6  */
7 
8 #include "SkTypes.h"
9 #if defined(SK_BUILD_FOR_WIN)
10 
11 #include "SkAutoCoInitialize.h"
12 
13 #include <objbase.h>
14 #include <winerror.h>
15 
16 SkAutoCoInitialize::SkAutoCoInitialize() :
17     fHR(
18         CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE)
19     )
20 { }
21 
22 SkAutoCoInitialize::~SkAutoCoInitialize() {
23     if (SUCCEEDED(this->fHR)) {
24         CoUninitialize();
25     }
26 }
27 
28 bool SkAutoCoInitialize::succeeded() {
29     return SUCCEEDED(this->fHR) || RPC_E_CHANGED_MODE == this->fHR;
30 }
31 
32 #endif//defined(SK_BUILD_FOR_WIN)
33