Index: base/trace_event/trace_event_impl.h |
diff --git a/base/trace_event/trace_event_impl.h b/base/trace_event/trace_event_impl.h |
index 742f6b6fe61d73aaccd80873104adfb7dd4c57ca..1177e9ecd2f2536444ca3deb6337b2ec44aae4e1 100644 |
--- a/base/trace_event/trace_event_impl.h |
+++ b/base/trace_event/trace_event_impl.h |
@@ -538,10 +538,11 @@ class BASE_EXPORT TraceLog { |
// Due to the implementation of thread-local buffers, flush can't be |
// done when tracing is enabled. If called when tracing is enabled, the |
// callback will be called directly with (empty_string, false) to indicate |
- // the end of this unsuccessful flush. |
+ // the end of this unsuccessful flush. Flush does the serialization |
+ // on the same thread if the caller doesn't set use_worker_thread explicitly. |
typedef base::Callback<void(const scoped_refptr<base::RefCountedString>&, |
bool has_more_events)> OutputCallback; |
- void Flush(const OutputCallback& cb); |
+ void Flush(const OutputCallback& cb, bool use_worker_thread = false); |
void FlushButLeaveBufferIntact(const OutputCallback& flush_output_callback); |
// Called by TRACE_EVENT* macros, don't call this directly. |
@@ -710,7 +711,9 @@ class BASE_EXPORT TraceLog { |
// |generation| is used in the following callbacks to check if the callback |
// is called for the flush of the current |logged_events_|. |
void FlushCurrentThread(int generation); |
- void ConvertTraceEventsToTraceFormat(scoped_ptr<TraceBuffer> logged_events, |
+ // Usually it runs on a different thread. |
+ static void ConvertTraceEventsToTraceFormat( |
+ scoped_ptr<TraceBuffer> logged_events, |
const TraceLog::OutputCallback& flush_output_callback); |
void FinishFlush(int generation); |
void OnFlushTimeout(int generation); |
@@ -803,6 +806,7 @@ class BASE_EXPORT TraceLog { |
OutputCallback flush_output_callback_; |
scoped_refptr<MessageLoopProxy> flush_message_loop_proxy_; |
subtle::AtomicWord generation_; |
+ bool use_worker_thread_; |
DISALLOW_COPY_AND_ASSIGN(TraceLog); |
}; |