CAMLprim value ml_skin_init (value use_vbo_v, value geom_v) { CAMLparam2 (use_vbo_v, geom_v); CAMLlocal5 (vertexa_v, normala_v, uva_v, skin_v, colors_v); State *s = &glob_state; use_vbo = Bool_val (use_vbo_v); #ifdef _WIN32 if (use_vbo) { GETPA (BindBuffer); GETPA (GenBuffers); GETPA (BufferData); GETPA (BufferSubData); GETPA (MapBuffer); GETPA (UnmapBuffer); } #endif vertexa_v = Field (geom_v, 0); normala_v = Field (geom_v, 1); uva_v = Field (geom_v, 2); skin_v = Field (geom_v, 3); colors_v = Field (geom_v, 4); skin_init (s, vertexa_v, normala_v, uva_v, skin_v, colors_v); CAMLreturn (Val_unit); }
int skin_init(Skin *skin, char *skin_name) { int res = skin_config_load(skin, skin_name); if (!res && strncmp(skin_name, "default", 7) != 0) { printf("skin: Trying to load default skin...\n"); if (res) skin_free(skin); res = skin_init(skin, "default"); } return res; }
__declspec(dllexport) int Load(PLUGINLINK * link) { PROTOCOLDESCRIPTOR pd; INITCOMMONCONTROLSEX iccs; /* setup static data */ pluginLink = link; /* get main thread handle */ DuplicateHandle( GetCurrentProcess(), GetCurrentThread(), GetCurrentProcess(), &g_hMainThread, THREAD_SET_CONTEXT, FALSE, 0); /* init common controls library (for the IP adress entries to work) */ memset(&iccs, 0, sizeof(iccs)); iccs.dwSize = sizeof(iccs); iccs.dwICC = ICC_INTERNET_CLASSES; InitCommonControlsEx(&iccs); /* init vqp_link module */ vqp_init(NULL, NULL); /* register this module with miranda */ memset(&pd, 0, sizeof(pd)); pd.cbSize = sizeof(pd); pd.szName = VQCHAT_PROTO; pd.type = PROTOTYPE_PROTOCOL; CallService(MS_PROTO_REGISTERMODULE, 0, (LPARAM)&pd); /* init our modules */ options_init(); msghandler_init(); skin_init(); user_init(); userlist_init(); chatroom_init(); /* register protocol services */ service_register_services(); service_hook_all(); return 0; }
int main( int argc, char **argv ) { // Read any command line arguments from our friend the user. arguments(argc, argv); // Catch some signals so can exit cleanly signal(SIGINT, exit_interrupt); #ifndef WIN32 signal(SIGHUP, exit_interrupt); signal(SIGTERM, exit_interrupt); signal(SIGPIPE, SIG_IGN); if (debug_on) setvbuf(stdout, NULL, _IONBF, 0); #endif printf("%s - Jorgen Lundman v%s %s %s\n\n", argv ? argv[0] : "llink", VERSION, VERSION_STRING, #if WITH_DVDREAD "(libdvdread)" #else #if HAVE_CLINKC "(libdvdnav, ClinkC)" #else "(libdvdnav)" #endif #endif ); lion_buffersize(conf_buffersize); //lion_buffersize(2352); if (lion_init()) { printf("Failed to initialize lion/networking\n"); exit(-1); } debugf("\n"); // Read configuration file, if any // Warning, calls lion_poll until done. conf_init(); debugf("[main] initialising...\n"); // Warning, calls lion_poll until done. mime_init(); // Warning, calls lion_poll until done. skin_init(); ssdp_init(); httpd_init(); request_init(); root_init(); llrar_init(); visited_init(); cgicmd_init(); #ifdef EXTERNAL external_init(); #endif printf("[main] ready!\n"); // Background? #ifndef WIN32 if (!foreground) { if (fork()) exit(0); setsid(); if (conf_pidfile) { FILE *fd; if ((fd = fopen(conf_pidfile, "w"))) { fprintf(fd, "%u\r\n", getpid()); fclose(fd); } } } #endif cupnp_init(); // Scan for media if (conf_xmlscan) { signal(SIGINT, SIG_DFL); xmlscan_run(); do_exit = 1; } query_init(); #ifdef WIN32 SetPriorityClass(GetCurrentProcess(), ABOVE_NORMAL_PRIORITY_CLASS); #endif // The main loop while ( !do_exit ) { // Was 250,0 - we should probably let users control this in // conf settings. if (lion_poll(0, 1)<0) do_exit=1; request_events(); #ifdef EXTERNAL external_resume(); #endif } printf("\n[main] releasing resources...\n"); query_free(); cupnp_free(); #ifdef EXTERNAL external_free(); #endif root_free(); cgicmd_free(); visited_free(); llrar_free(); request_free(); httpd_free(); ssdp_free(); skin_free(); mime_free(); conf_free(); #ifndef WIN32 // Crashed when releasing spawned processes, until i can fix: lion_free(); #endif debugf("[main] done.\n"); return 0; }