// Copyright (C) 2001 Jean-Marc Valin #include #include "UIDocument.h" #include #include "ParameterSet.h" #include "ObjectRef.h" #include #include #include "Network.h" #include #include "GRunContext.h" #include "path.h" #include #include #include "iextensions.h" #include #include #include #include "object_param.h" #ifdef HAVE_CONFIG_H # include #endif using namespace std; using namespace FD; namespace FD { void quit() { gdk_threads_enter(); gtk_main_quit(); gdk_threads_leave(); } void run2(GRunContext *ctx) { signal(11,SIG_DFL); ctx->run(); //cerr << "End of run2()" << endl; //gtk_main_quit(); } }//namespace FD int main(int argc, char **argv) { //xmlKeepBlanksDefault(0); if (argc < 2) { cout<<"Usage : "< [arguments]"<print(); delete e; //exit(1); } UINodeRepository::Scan(); IExtensions::detect(); ParameterSet ¶ms = *new ParameterSet; for (int arg = 2; arg 2 && argv[arg][0]=='<' && argv[arg][strlen(argv[arg])-1]=='>') { sprintf (arg_name, "object:ARG%d", arg-1); try { string val(argv[arg]); ParameterSet p; ObjectRef obj = ObjectParam::stringParam("object", val, p); if (!obj.isNil()) params.add(arg_name, obj); } catch (...) {} } } UIDocument *doc; /*if (string(argv[1]) == "/dev/stdin") { string docStr; doc = new UIDocument("/dev/stdin"); while(1) { char buff[1025]; cin.read(buff, 1024); buff[1024]=0; if (cin.fail()) { docStr.append(buff, cin.gcount()); break; } docStr.append(buff, 1024); } doc->loadFromMemory(docStr.c_str(), docStr.size()); } else*/ { doc = new UIDocument(argv[1]); doc->load(); } GRunContext *ctx = new GRunContext(doc, params); pthread_t runThread; /* pthread_attr_t tattr; pthread_attr_init(&tattr); pthread_attr_setdetachstate(&tattr,PTHREAD_CREATE_DETACHED); */ ctx->set_thread(&runThread); //pthread_create(&runThread, &tattr, (void * (*)(void *))run2, (void *) ctx); pthread_create(&runThread, NULL, (void * (*)(void *))run2, (void *) ctx); gdk_threads_enter(); gtk_main (); gdk_threads_leave(); return 0; }