summaryrefslogtreecommitdiffstats
path: root/ppapi/examples
diff options
context:
space:
mode:
authorbrettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-01-26 19:40:58 +0000
committerbrettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-01-26 19:40:58 +0000
commitcefc3f13fd0616eb2aeae1c4fdb63b8bb5476761 (patch)
tree5de41b0f2d14535afa5e49cc9bae0526a8b16f3f /ppapi/examples
parent50fa6f92efd0aceae9dbe689b3b216d003b095a7 (diff)
downloadchromium_src-cefc3f13fd0616eb2aeae1c4fdb63b8bb5476761.zip
chromium_src-cefc3f13fd0616eb2aeae1c4fdb63b8bb5476761.tar.gz
chromium_src-cefc3f13fd0616eb2aeae1c4fdb63b8bb5476761.tar.bz2
Revert 119200, the rest of the patch.
First pass at implementing the MessageLoop interface. This includes a simple example and a helper class. The current example just asserts due to thread checks we have in there now, but this should provide a good starting point. git-svn-id: svn://svn.chromium.org/chrome/trunk/src@119270 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ppapi/examples')
-rw-r--r--ppapi/examples/threading/threading.cc60
1 files changed, 60 insertions, 0 deletions
diff --git a/ppapi/examples/threading/threading.cc b/ppapi/examples/threading/threading.cc
new file mode 100644
index 0000000..bfd21a9
--- /dev/null
+++ b/ppapi/examples/threading/threading.cc
@@ -0,0 +1,60 @@
+// Copyright (c) 2012 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 "ppapi/c/pp_errors.h"
+#include "ppapi/cpp/input_event.h"
+#include "ppapi/cpp/instance.h"
+#include "ppapi/cpp/module.h"
+#include "ppapi/utility/completion_callback_factory.h"
+#include "ppapi/utility/threading/simple_thread.h"
+
+class MyInstance : public pp::Instance {
+ public:
+ MyInstance(PP_Instance instance) : pp::Instance(instance) {
+ thread_ = new pp::SimpleThread(this);
+ factory_.Initialize(this);
+ }
+
+ virtual ~MyInstance() {
+ delete thread_;
+ }
+
+ virtual bool Init(uint32_t argc, const char* argn[], const char* argv[]) {
+ thread_->Start();
+ thread_->message_loop().PostWork(
+ factory_.NewCallback(&MyInstance::CallOnBackground));
+ return true;
+ }
+
+ virtual void DidChangeView(const pp::View& view) {
+ }
+
+ private:
+ void CallOnBackground(int32_t result) {
+ }
+
+ pp::CompletionCallbackFactory<MyInstance> factory_;
+
+ pp::SimpleThread* thread_;
+};
+
+
+class MyModule : public pp::Module {
+ public:
+ MyModule() : pp::Module() {}
+ virtual ~MyModule() {}
+
+ virtual pp::Instance* CreateInstance(PP_Instance instance) {
+ return new MyInstance(instance);
+ }
+};
+
+namespace pp {
+
+// Factory function for your specialization of the Module object.
+Module* CreateModule() {
+ return new MyModule();
+}
+
+} // namespace pp