1 // Copyright 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef CC_THREAD_IMPL_H_
6 #define CC_THREAD_IMPL_H_
8 #include "base/callback.h"
9 #include "base/memory/scoped_ptr.h"
10 #include "base/message_loop_proxy.h"
11 #include "cc/cc_export.h"
12 #include "cc/thread.h"
16 // Implements cc::Thread in terms of base::MessageLoopProxy.
17 class CC_EXPORT ThreadImpl
: public Thread
{
19 // Creates a ThreadImpl wrapping the current thread.
20 static scoped_ptr
<cc::Thread
> createForCurrentThread();
22 // Creates a Thread wrapping a non-current thread.
23 static scoped_ptr
<cc::Thread
> createForDifferentThread(scoped_refptr
<base::MessageLoopProxy
> thread
);
25 virtual ~ThreadImpl();
27 // cc::Thread implementation
28 virtual void postTask(base::Closure cb
) OVERRIDE
;
29 virtual void postDelayedTask(base::Closure cb
, long long delayMs
) OVERRIDE
;
30 virtual bool belongsToCurrentThread() const OVERRIDE
;
33 explicit ThreadImpl(scoped_refptr
<base::MessageLoopProxy
> thread
);
35 scoped_refptr
<base::MessageLoopProxy
> m_thread
;
40 #endif // CC_THREAD_IMPL_H_