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