OLD | NEW |
| (Empty) |
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 int rtn = nacl_io_init(); | |
46 if (rtn != 0) | |
47 return rtn; | |
48 rtn = PSUserMainGet()(argc, argv); | |
49 nacl_io_uninit(); | |
50 return rtn; | |
51 } | |
OLD | NEW |