Home | History | Annotate | Download | only in ppapi_simple
      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 #ifdef __native_client__
      6 #include <irt.h>
      7 #include <irt_ppapi.h>
      8 #endif
      9 
     10 #include <stdio.h>
     11 
     12 #include "nacl_io/nacl_io.h"
     13 #include "ppapi/c/pp_instance.h"
     14 #include "ppapi/c/pp_module.h"
     15 #include "ppapi_simple/ps_instance.h"
     16 #include "ppapi_simple/ps_main.h"
     17 
     18 extern "C" int PpapiPluginMain();
     19 
     20 void* PSMainCreate(PP_Instance inst, PSMainFunc_t entry_point) {
     21   PSInstance* pInst = new PSInstance(inst);
     22   pInst->SetMain(entry_point);
     23   return pInst;
     24 }
     25 
     26 /**
     27  * main entry point for ppapi_simple applications.  This differs from the
     28  * regular ppapi main entry point in that it will fall back to running
     29  * the user's main code in the case that the PPAPI hooks are not found.
     30  * This allows ppapi_simple binary to run within chrome (with PPAPI present)
     31  * and also under sel_ldr (no PPAPI).
     32  */
     33 #ifdef __native_client__
     34 extern "C" int __nacl_main(int argc, char* argv[]) {
     35   struct nacl_irt_ppapihook hooks;
     36   if (nacl_interface_query(NACL_IRT_PPAPIHOOK_v0_1, &hooks, sizeof(hooks)) ==
     37       sizeof(hooks)) {
     38     return PpapiPluginMain();
     39   }
     40 #else
     41 int main(int argc, char* argv[]) {
     42 #endif
     43   // By default, or if not running in the browser we simply run the main
     44   // entry point directly, on the main thread.
     45   nacl_io_init();
     46   int rtn = PSUserMainGet()(argc, argv);
     47   nacl_io_uninit();
     48   return rtn;
     49 }
     50