1eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Copyright 2013 The Chromium Authors. All rights reserved.
2eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// found in the LICENSE file.
4eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
5eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include <android/log.h>
6eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include <iostream>
7eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include <sstream>
8eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
9eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "gpu/command_buffer/common/logging.h"
10eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
11eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochnamespace gpu {
12eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
13eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochnamespace {
14eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochstd::stringstream* g_log;
15eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochconst char* kLogTag = "chromium-gpu";
16eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}
17eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
18eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochstd::ostream& Logger::stream() {
19eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  if (!g_log)
20eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    g_log = new std::stringstream();
21eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  return *g_log;
22eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}
23eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
24eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochLogger::~Logger() {
25eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  if (!condition_) {
26eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    __android_log_print(ANDROID_LOG_INFO, kLogTag, "%s", g_log->str().c_str());
27eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    g_log->str(std::string());
28eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    if (level_ == FATAL)
29eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      assert(false);
30eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  }
31eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}
32eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
33eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}  // namespace gpu
34