--- np2/x11/main.c 2003/11/23 12:46:55 1.5 +++ np2/x11/main.c 2003/12/19 16:08:01 1.10 @@ -42,16 +42,21 @@ #include "timing.h" #include "toolkit.h" -#include "keydisp.h" +#include "kdispwin.h" +#include "sysmenu.h" #include "toolwin.h" +#include "viewer.h" #include "commng.h" +#include "fontmng.h" +#include "inputmng.h" #include "joymng.h" #include "kbdmng.h" #include "mousemng.h" #include "scrnmng.h" #include "soundmng.h" #include "sysmng.h" +#include "taskmng.h" /* @@ -94,6 +99,7 @@ sighandler(int signo) static struct option longopts[] = { { "config", required_argument, 0, 'c' }, { "timidity-config", required_argument, 0, 'C' }, + { "shared-pixmap", no_argument, 0, 'p' }, { "help", no_argument, 0, 'h' }, { 0, 0, 0, 0 }, }; @@ -120,13 +126,14 @@ main(int argc, char *argv[]) int rv = 1; int ch; int i, drvmax; + BOOL shared_pixmap_flag = FALSE; progname = argv[0]; toolkit_initialize(); toolkit_arginit(&argc, &argv); - while ((ch = getopt_long(argc, argv, "c:C:h", longopts, NULL)) != -1) { + while ((ch = getopt_long(argc, argv, "c:C:nh", longopts, NULL)) != -1) { switch (ch) { case 'c': if (stat(optarg, &sb) < 0 || !S_ISREG(sb.st_mode)) { @@ -149,6 +156,10 @@ main(int argc, char *argv[]) sizeof(timidity_cfgfile_path)); break; + case 'p': + shared_pixmap_flag = TRUE; + break; + case 'h': case '?': default: @@ -215,7 +226,7 @@ main(int argc, char *argv[]) file_setcd(modulefile); initload(); toolwin_readini(); - keydisp_readini(); + kdispwin_readini(); rand_setseed((SINT32)time(NULL)); @@ -224,20 +235,30 @@ main(int argc, char *argv[]) mmxflag += np2oscfg.disablemmx ? MMXFLAG_DISABLE : 0; #endif + use_shared_pixmap = np2oscfg.shared_pixmap && shared_pixmap_flag; + TRACEINIT(); - keystat_reset(); + if (fontmng_init() != SUCCESS) + goto fontmng_failure; + + kdispwin_initialize(); + viewer_init(); toolkit_widget_create(); scrnmng_initialize(); kbdmng_init(); + inputmng_init(); + keystat_reset(); scrnmode = 0; if (np2cfg.RASTER) { scrnmode |= SCRNMODE_HIGHCOLOR; } + if (sysmenu_create() != SUCCESS) + goto sysmenu_failure; if (scrnmng_create(scrnmode) != SUCCESS) - goto resource_cleanup; + goto scrnmng_failure; if (soundmng_initialize() == SUCCESS) { result = soundmng_pcmload(SOUND_PCMSEEK, file_getcd("fddseek.wav")); @@ -264,6 +285,7 @@ main(int argc, char *argv[]) commng_initialize(); sysmng_initialize(); + taskmng_initialize(); joy_init(); pccore_init(); @@ -279,7 +301,7 @@ main(int argc, char *argv[]) toolwin_create(); } if (np2oscfg.keydisp) { - keydisp_create(); + kdispwin_create(); } } @@ -297,12 +319,10 @@ main(int argc, char *argv[]) setup_signal(SIGINT, sighandler); setup_signal(SIGTERM, sighandler); - np2running = TRUE; toolkit_widget_mainloop(); - np2running = FALSE; rv = 0; - keydisp_destroy(); + kdispwin_destroy(); toolwin_destroy(); pccore_cfgupdate(); @@ -321,15 +341,24 @@ main(int argc, char *argv[]) soundmng_deinitialize(); scrnmng_destroy(); -resource_cleanup: +scrnmng_failure: + sysmenu_destroy(); + +sysmenu_failure: + fontmng_terminate(); + +fontmng_failure: if (sys_updates & (SYS_UPDATECFG|SYS_UPDATEOSCFG)) { initsave(); toolwin_writeini(); - keydisp_writeini(); + kdispwin_writeini(); } TRACETERM(); dosio_term(); + viewer_term(); + toolkit_terminate(); + return rv; }