Преглед изворни кода

nacl: remove our old hack of #including the file containing main() from

the NaCl instance object. Now we properly override main() and we can at
last build all the executables as NaCl binaries.
legacy
Sam Hocevar sam пре 12 година
родитељ
комит
b83a7eccca
3 измењених фајлова са 25 додато и 14 уклоњено
  1. +5
    -0
      src/core.h
  2. +16
    -14
      src/platform/nacl/nacl_instance.cpp
  3. +4
    -0
      src/platform/nacl/nacl_instance.h

+ 5
- 0
src/core.h Прегледај датотеку

@@ -61,6 +61,11 @@ static inline int isnan(float f)
}
#endif

/* If using NaCl, override main with our version */
#if defined __native_client__
# define main lol_nacl_main
#endif

// Base types
#include "lol/debug.h"
#include "math/trig.h"


+ 16
- 14
src/platform/nacl/nacl_instance.cpp Прегледај датотеку

@@ -25,6 +25,14 @@
#include "platform/nacl/nacl_instance.h"
#include "platform/nacl/opengl_context.h"

/* One of these wrappers will be overridden by the user's version */
void lol_nacl_main(void) __attribute__((weak));
void lol_nacl_main(void) {}
void lol_nacl_main(int argc, char **argv) __attribute__((weak));
void lol_nacl_main(int argc, char **argv) {}
void lol_nacl_main(int argc, char **argv, char **envp) __attribute__((weak));
void lol_nacl_main(int argc, char **argv, char **envp) {}

namespace lol
{

@@ -53,26 +61,20 @@ void TickCallback(void* data, int32_t result)
DELTA_MS, pp::CompletionCallback(&TickCallback, data), PP_OK);
}

}
#define main OLDMAIN
#include "../test/tutorial/tut03.cpp"
#undef main
namespace lol {

bool NaClInstance::Init(uint32_t /* argc */,
bool NaClInstance::Init(uint32_t argc,
const char* /* argn */[],
const char* /* argv */[])
const char* argv[])
{
Ticker::Setup(60.0f);

//new Kub();
//new DebugQuad();
new Fractal(ivec2(640, 480));

// My timer callback
pp::Module::Get()->core()->CallOnMainThread(
DELTA_MS, pp::CompletionCallback(&TickCallback, this), PP_OK);

/* Call the user's main() function. FIXME: run it in a thread */
char *env[] = { NULL };
lol_nacl_main();
lol_nacl_main(argc, const_cast<char **>(argv));
lol_nacl_main(argc, const_cast<char **>(argv), (char **)env);

return true;
}



+ 4
- 0
src/platform/nacl/nacl_instance.h Прегледај датотеку

@@ -45,6 +45,10 @@ class NaClInstance : public pp::Instance {
SharedOpenGLContext opengl_context_;

ivec2 m_size;

private:
static void CallIntMainWrappers(int argc, char const* argn[]);
static void CallVoidMainWrappers(int argc, char const* argn[]);
};

} // namespace lol


Loading…
Откажи
Сачувај