//---------------------------------------------------------------------------- int main(int argc, char* argv[]) { if ( !open_libs() ) { IDOS->Printf("Can't open libraries.\n"); return -1; } ClassLibrary* requester = IIntuition->OpenClass("requester.class", 51, &RequesterClass); ClassLibrary* window = IIntuition->OpenClass("window.class", 51, &WindowClass); if ( requester == 0 || window == 0 ) { IDOS->Printf("Can't open classes.\n"); IIntuition->CloseClass(requester); IIntuition->CloseClass(window); close_libs(); return -1; } int rc = agg_main(argc, argv); IIntuition->CloseClass(window); IIntuition->CloseClass(requester); close_libs(); return rc; }
lua_State* initialize() { lua_State* L = luaL_newstate2(); open_libs(L); clear_searchers_table(L); open_lua_engine(L); runtime::initialize(); return L; }
int main(int argc, char** argv) { for (int n=1; n<argc; ++n) { Lua_State L; open_libs(L); int s = luaL_loadfile(L, argv[n]); if (s==0) s = execute_program(L); report_errors(L, s); // lua_close(L) automatically called here } return 0; }
int main(void) { struct TrackedResources *crs = NULL; struct TrackedResources *start_rs = NULL; BOOL quitme = FALSE; int numlines = 30; struct Task *this; ULONG portsig; struct MsgPort *port; this = FindTask(NULL); port = CreateMsgPort(); if (!port) return 2; port->mp_Node.ln_Name = "LeakWatch"; port->mp_Node.ln_Pri = 0; AddPort(port); portsig = 1L << port->mp_SigBit; open_libs(); FPuts(Output(), "LeakWatch running, CTRL-C to exit, CTRL-E to watch for leaks since beginning, CTRL-F to watch for leaks since last CTRL-F, CTRL-D for an usage snapshot\n"); crs = NewResourcesState(); if (NULL == crs) quitme = TRUE; else start_rs = CopyResourcesState(crs); while(!quitme) { ULONG signals; signals = Wait(portsig | SIGBREAKF_CTRL_F | SIGBREAKF_CTRL_E | SIGBREAKF_CTRL_D | SIGBREAKF_CTRL_C); if (signals & SIGBREAKF_CTRL_D) { struct TrackedResources *tr; tr = NewResourcesState(); if (NULL == tr) { quitme = TRUE; break; } DisplayResourcesState(tr, numlines); DeleteResourcesState(tr); } if (signals & SIGBREAKF_CTRL_E) { struct ResourceDiff *rd = NULL; DeleteResourcesState(crs); crs = NewResourcesState(); if (NULL == crs) { quitme = TRUE; break; } /* DisplayResourcesState(crs); */ /* only for debug */ rd = NewStateDiff(start_rs, crs); DisplayStateDiff(rd, numlines); DeleteStateDiff(rd); } if (signals & SIGBREAKF_CTRL_F) { struct TrackedResources *ors = crs; struct ResourceDiff *rd = NULL; crs = NewResourcesState(); if (NULL == crs) { quitme = TRUE; break; } rd = NewStateDiff(ors, crs); DisplayStateDiff(rd, numlines); DeleteStateDiff(rd); DeleteResourcesState(ors); } if (signals & SIGBREAKF_CTRL_C) { quitme = TRUE; } if (signals & portsig) { struct Message *msg; while((msg = (struct Message *)GetMsg(port))) { D(bug("Received watch message.\n")); ReplyMsg(msg); } } } /* while(!quitme) */ DeleteResourcesState(crs); DeleteResourcesState(start_rs); close_libs(); if (port) { RemPort(port); DeleteMsgPort(port); } return 0; }
void init_game(Nepgear::State *ng) { Nepgear::Configuration conf("config.lua"); Nepgear::Logger log(NULL); ng->lua = lua_open(); open_libs(ng->lua); Nepgear::Window w; Nepgear::WindowFlags f; { std::string renderer = conf.get_string("Renderer", "OpenGL"); int major = 2; int minor = 1; /* Parse OpenGL major/minor version out of the preference. * Format: OpenGL_X.Y */ size_t pos = renderer.find_first_of("_"); if (pos != std::string::npos) { std::string version = renderer.substr(pos+1); std::string upper, lower; log.debug("Requested OpenGL version " + version); pos = version.find_first_of("."); upper = version.substr(0, pos); lower = version.substr(pos+1); major = atoi(upper.c_str()); minor = atoi(lower.c_str()); } f.width = conf.get_integer("DisplayWidth", 1280); f.height = conf.get_integer("DisplayHeight", 720); f.gl_major = major; f.gl_minor = minor; f.strict = major >= 3; f.mode = Nepgear::WindowFlags::Windowed; f.homie = NULL; } w.Create(f); ng->windows.push_back(&w); // wait a moment for configuration to be worked out in the GL thread while (!ng->start) tthread::this_thread::sleep_for(tthread::chrono::milliseconds(2)); while (ng->running) { /* HACK: glfwWaitEvents misbehaves for me using nvidia's 295.20 drivers * and a GT 330. Workaround: force poll on first update in other thread */ if (!ng->configuration["enable_wait_hack"]) glfwWaitEvents(); else tthread::this_thread::sleep_for(tthread::chrono::milliseconds(16)); if (glfwGetKey(w.GetHandle(), GLFW_KEY_ESC) == GLFW_PRESS || glfwGetWindowParam(w.GetHandle(), GLFW_CLOSE_REQUESTED)) { Nepgear::LockGuard<Nepgear::Mutex>::type hold(ng->lock); ng->running = false; } } w.Destroy(); }