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
10#include "SkHRESULT.h"
11
12void SkTraceHR(const char* file, unsigned long line, HRESULT hr, const char* msg) {
13    if (msg) {
14        SkDebugf("%s\n", msg);
15    }
16    SkDebugf("%s(%lu) : error 0x%x: ", file, line, hr);
17
18    LPSTR errorText = NULL;
19    FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER |
20                   FORMAT_MESSAGE_FROM_SYSTEM |
21                   FORMAT_MESSAGE_IGNORE_INSERTS,
22                   NULL,
23                   hr,
24                   MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
25                   (LPSTR) &errorText,
26                   0,
27                   NULL
28    );
29
30    if (NULL == errorText) {
31        SkDebugf("<unknown>\n");
32    } else {
33        SkDebugf("%s", errorText);
34        LocalFree(errorText);
35        errorText = NULL;
36    }
37}
38