1 // Copyright (c) 2012 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. 4 5 #include "ppapi/c/pp_errors.h" 6 #include "ppapi/cpp/input_event.h" 7 #include "ppapi/cpp/instance.h" 8 #include "ppapi/cpp/module.h" 9 #include "ppapi/utility/completion_callback_factory.h" 10 #include "ppapi/utility/threading/simple_thread.h" 11 12 class MyInstance : public pp::Instance { 13 public: 14 MyInstance(PP_Instance instance) : pp::Instance(instance) { 15 thread_ = new pp::SimpleThread(this); 16 factory_.Initialize(this); 17 } 18 19 virtual ~MyInstance() { 20 delete thread_; 21 } 22 23 virtual bool Init(uint32_t argc, const char* argn[], const char* argv[]) { 24 thread_->Start(); 25 thread_->message_loop().PostWork( 26 factory_.NewCallback(&MyInstance::CallOnBackground)); 27 return true; 28 } 29 30 virtual void DidChangeView(const pp::View& view) { 31 } 32 33 private: 34 void CallOnBackground(int32_t result) { 35 } 36 37 pp::CompletionCallbackFactory<MyInstance> factory_; 38 39 pp::SimpleThread* thread_; 40 }; 41 42 43 class MyModule : public pp::Module { 44 public: 45 MyModule() : pp::Module() {} 46 virtual ~MyModule() {} 47 48 virtual pp::Instance* CreateInstance(PP_Instance instance) { 49 return new MyInstance(instance); 50 } 51 }; 52 53 namespace pp { 54 55 // Factory function for your specialization of the Module object. 56 Module* CreateModule() { 57 return new MyModule(); 58 } 59 60 } // namespace pp 61