00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "vmd.h"
00023 #include "ProfileHooks.h"
00024
00025 #if defined(ANDROID)
00026 int VMDmain(int argc, char **argv) {
00027 #else
00028 int main(int argc, char **argv) {
00029 #endif
00030 int mpienabled = 0;
00031
00032 PROFILE_MAIN_THREAD();
00033
00034 PROFILE_PUSH_RANGE("VMD main() initialization", 4);
00035
00036 #if defined(VMDMPI)
00037
00038
00039 if (getenv("VMDNOMPI") == NULL) {
00040 mpienabled = 1;
00041 }
00042 #endif
00043
00044 if (!VMDinitialize(&argc, &argv, mpienabled)) {
00045 return 0;
00046 }
00047
00048 const char *displayTypeName = VMDgetDisplayTypeName();
00049 int displayLoc[2], displaySize[2];
00050 VMDgetDisplayFrame(displayLoc, displaySize);
00051
00052 VMDApp *app = new VMDApp(argc, argv, mpienabled);
00053
00054 if (!app->VMDinit(argc, argv, displayTypeName, displayLoc, displaySize)) {
00055 delete app;
00056 return 1;
00057 }
00058
00059 PROFILE_POP_RANGE();
00060 PROFILE_PUSH_RANGE("VMD startup scripts", 1);
00061
00062
00063 VMDreadInit(app);
00064
00065 PROFILE_POP_RANGE();
00066 PROFILE_PUSH_RANGE("VMD process user script(s)", 1);
00067
00068
00069 VMDreadStartup(app);
00070
00071 PROFILE_POP_RANGE();
00072 PROFILE_PUSH_RANGE("VMD interactive event loop", 1);
00073
00074
00075 do {
00076
00077
00078 #ifdef VMDTCL
00079
00080
00081 #endif
00082
00083
00084 VMDupdateFltk();
00085
00086 #if 0
00087
00088 if (vmd_check_stdin()) {
00089 app->process_console();
00090 }
00091 #endif
00092
00093 } while(app->VMDupdate(VMD_CHECK_EVENTS));
00094
00095 PROFILE_POP_RANGE();
00096
00097
00098 delete app;
00099 VMDshutdown(mpienabled);
00100
00101 return 0;
00102 }
00103