summaryrefslogtreecommitdiffstats
path: root/remoting/client/plugin/pepper_util.cc
diff options
context:
space:
mode:
Diffstat (limited to 'remoting/client/plugin/pepper_util.cc')
-rw-r--r--remoting/client/plugin/pepper_util.cc31
1 files changed, 31 insertions, 0 deletions
diff --git a/remoting/client/plugin/pepper_util.cc b/remoting/client/plugin/pepper_util.cc
new file mode 100644
index 0000000..7c91233
--- /dev/null
+++ b/remoting/client/plugin/pepper_util.cc
@@ -0,0 +1,31 @@
+// Copyright (c) 2010 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.
+
+#include "remoting/client/plugin/pepper_util.h"
+
+#include "base/task.h"
+#include "third_party/ppapi/c/pp_completion_callback.h"
+#include "third_party/ppapi/cpp/module.h"
+
+namespace remoting {
+
+void CompletionCallbackTaskAdapter(void* user_data, int32_t not_used) {
+ Task* task = reinterpret_cast<Task*>(user_data);
+ task->Run();
+ delete task;
+}
+
+pp::CompletionCallback TaskToCompletionCallback(Task* task) {
+ return pp::CompletionCallback(&CompletionCallbackTaskAdapter, task);
+}
+
+void RunTaskOnPluginThread(Task* task) {
+ pp::Module::Get()->core()->CallOnMainThread(
+ 0 /* run immediately */,
+ TaskToCompletionCallback(task),
+ 0 /* unused value */
+ );
+}
+
+} // namespace remoting