summaryrefslogtreecommitdiffstats
path: root/base/message_loop_proxy.h
diff options
context:
space:
mode:
authordcheng@chromium.org <dcheng@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-12-29 22:51:17 +0000
committerdcheng@chromium.org <dcheng@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-12-29 22:51:17 +0000
commitb2414ca78f43c38aa817f58ddc8247d4c1769e5d (patch)
treea8c2ac82ce53ba2aec9db231a2129cbf2845fede /base/message_loop_proxy.h
parentfe20095d2cfe95bd02d3bc728f7fa27cbb36cf94 (diff)
downloadchromium_src-b2414ca78f43c38aa817f58ddc8247d4c1769e5d.zip
chromium_src-b2414ca78f43c38aa817f58ddc8247d4c1769e5d.tar.gz
chromium_src-b2414ca78f43c38aa817f58ddc8247d4c1769e5d.tar.bz2
Replace MessageLoop::DeleteSoon implementation with one that uses base::Bind.
BUG=none TEST=none TBR=willchan,brettw,tony Review URL: http://codereview.chromium.org/9004051 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@115997 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/message_loop_proxy.h')
-rw-r--r--base/message_loop_proxy.h11
1 files changed, 9 insertions, 2 deletions
diff --git a/base/message_loop_proxy.h b/base/message_loop_proxy.h
index aac11b9..738f39f 100644
--- a/base/message_loop_proxy.h
+++ b/base/message_loop_proxy.h
@@ -10,6 +10,7 @@
#include "base/basictypes.h"
#include "base/callback_forward.h"
#include "base/memory/ref_counted.h"
+#include "base/message_loop_helpers.h"
#include "base/task.h"
namespace tracked_objects {
@@ -121,8 +122,9 @@ class BASE_EXPORT MessageLoopProxy
template <class T>
bool DeleteSoon(const tracked_objects::Location& from_here,
- T* object) {
- return PostNonNestableTask(from_here, new DeleteTask<T>(object));
+ const T* object) {
+ return base::subtle::DeleteHelperInternal<T, bool>::DeleteOnMessageLoop(
+ this, from_here, object);
}
template <class T>
bool ReleaseSoon(const tracked_objects::Location& from_here,
@@ -135,6 +137,7 @@ class BASE_EXPORT MessageLoopProxy
static scoped_refptr<MessageLoopProxy> current();
protected:
+ template <class T, class R> friend class subtle::DeleteHelperInternal;
friend class RefCountedThreadSafe<MessageLoopProxy, MessageLoopProxyTraits>;
friend struct MessageLoopProxyTraits;
@@ -144,6 +147,10 @@ class BASE_EXPORT MessageLoopProxy
// Called when the proxy is about to be deleted. Subclasses can override this
// to provide deletion on specific threads.
virtual void OnDestruct() const;
+
+ bool DeleteSoonInternal(const tracked_objects::Location& from_here,
+ void(*deleter)(const void*),
+ const void* object);
};
struct MessageLoopProxyTraits {