// Copyright (c) 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // This file contains the Logger class. #ifndef GPU_COMMAND_BUFFER_SERVICE_LOGGER_H_ #define GPU_COMMAND_BUFFER_SERVICE_LOGGER_H_ #include #include #include "base/callback.h" #include "base/macros.h" #include "gpu/gpu_gles2_export.h" namespace gpu { namespace gles2 { class DebugMarkerManager; class GPU_GLES2_EXPORT Logger { public: static const int kMaxLogMessages = 256; using LogMessageCallback = base::RepeatingCallback; Logger(const DebugMarkerManager* debug_marker_manager, const LogMessageCallback& callback, bool disable_gl_error_limit); ~Logger(); void LogMessage(const char* filename, int line, const std::string& msg); const std::string& GetLogPrefix() const; // Defaults to true. Set to false for the gpu_unittests as they // are explicitly checking errors are generated and so don't need the numerous // messages. Otherwise, chromium code that generates these errors likely has a // bug. void set_log_synthesized_gl_errors(bool enabled) { log_synthesized_gl_errors_ = enabled; } private: // Uses the current marker to add information to logs. const DebugMarkerManager* debug_marker_manager_; const LogMessageCallback log_message_callback_; std::string this_in_hex_; int log_message_count_; bool log_synthesized_gl_errors_; bool disable_gl_error_limit_; DISALLOW_COPY_AND_ASSIGN(Logger); }; } // namespace gles2 } // namespace gpu #endif // GPU_COMMAND_BUFFER_SERVICE_LOGGER_H_