--- rxvt-unicode/src/main.C 2004/02/13 13:28:17 1.33 +++ rxvt-unicode/src/main.C 2004/02/21 21:43:37 1.38 @@ -1,4 +1,4 @@ -/*--------------------------------*-C-*---------------------------------* +/*--------------------------------*-C-*---------------------------------*; * File: main.c *----------------------------------------------------------------------* * @@ -92,13 +92,13 @@ #ifdef POINTER_BLANK pointer_ev (this, &rxvt_term::pointer_cb), #endif +#ifdef USE_XIM + im_ev (this, &rxvt_term::im_cb), +#endif check_ev (this, &rxvt_term::check_cb), destroy_ev (this, &rxvt_term::destroy_cb), pty_ev (this, &rxvt_term::pty_cb), - incr_ev (this, &rxvt_term::incr_cb), -#ifdef USE_XIM - im_ev (this, &rxvt_term::im_cb) -#endif + incr_ev (this, &rxvt_term::incr_cb) { cmdbuf_ptr = cmdbuf_endp = cmdbuf_base; } @@ -108,15 +108,6 @@ if (cmd_fd >= 0) close (cmd_fd); - scr_release (); - - free (env_windowid); - free (env_display); - free (env_term); - free (env_colorfgbg); - free (locale); - free (codeset); - #ifndef NO_SETOWNER_TTYDEV privileged_ttydev (RESTORE); #endif @@ -124,13 +115,27 @@ privileged_utmp (RESTORE); #endif + delete TermWin.fontset; + + if (display) + if (TermWin.parent[0]) + XDestroyWindow (display->display, TermWin.parent[0]); + // TODO: free pixcolours, colours should become part of rxvt_display delete PixColors; - delete TermWin.fontset; displays.put (display); + scr_release (); + + free (env_windowid); + free (env_display); + free (env_term); + free (env_colorfgbg); + free (locale); + free (codeset); + delete envv; delete argv; } @@ -140,13 +145,9 @@ { if (display) { - if (TermWin.parent[0]) - XDestroyWindow (display->display, TermWin.parent[0]); - rootwin_ev.stop (display); termwin_ev.stop (display); vt_ev.stop (display); - #ifdef USE_XIM im_destroy (); im_ev.stop (display); @@ -267,10 +268,8 @@ #endif #if 0 -#ifdef DEBUG_X XSynchronize (display->display, True); #endif -#endif #ifdef HAVE_SCROLLBARS if (Options & Opt_scrollBar) @@ -1317,7 +1316,7 @@ #if defined(HAVE_XSETLOCALE) || defined(HAVE_SETLOCALE) if (rs[Rs_imLocale]) - setlocale (LC_CTYPE, rs[Rs_imLocale]); + SET_LOCALE (rs[Rs_imLocale]); #endif p = rs[Rs_inputMethod]; @@ -1358,7 +1357,7 @@ done: #if defined(HAVE_XSETLOCALE) || defined(HAVE_SETLOCALE) if (rs[Rs_imLocale]) - setlocale (LC_CTYPE, locale); + SET_LOCALE (locale); #endif }