Home | History | Annotate | Download | only in threading
      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