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 "include/core/SkTypes.h"
9#if defined(SK_BUILD_FOR_WIN)
10
11#include "src/utils/win/SkAutoCoInitialize.h"
12
13#include <objbase.h>
14#include <winerror.h>
15
16SkAutoCoInitialize::SkAutoCoInitialize() :
17    fHR(
18        CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE)
19    )
20{ }
21
22SkAutoCoInitialize::~SkAutoCoInitialize() {
23    if (SUCCEEDED(this->fHR)) {
24        CoUninitialize();
25    }
26}
27
28bool SkAutoCoInitialize::succeeded() {
29    return SUCCEEDED(this->fHR) || RPC_E_CHANGED_MODE == this->fHR;
30}
31
32#endif//defined(SK_BUILD_FOR_WIN)
33