ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/rxvt-unicode/src/main.C
(Generate patch)

Comparing rxvt-unicode/src/main.C (file contents):
Revision 1.270 by root, Tue Dec 4 16:24:00 2007 UTC vs.
Revision 1.280 by ayin, Wed Dec 12 11:35:56 2007 UTC

38#include <limits> 38#include <limits>
39 39
40#include <csignal> 40#include <csignal>
41#include <cstring> 41#include <cstring>
42 42
43#ifdef HAVE_TERMIOS_H
44# include <termios.h> 43#include <termios.h>
45#endif
46 44
47#ifdef HAVE_XSETLOCALE 45#ifdef HAVE_XSETLOCALE
48# define X_LOCALE 46# define X_LOCALE
49# include <X11/Xlocale.h> 47# include <X11/Xlocale.h>
50#else 48#else
157{ 155{
158#if HAVE_BG_PIXMAP 156#if HAVE_BG_PIXMAP
159 update_background_ev.set<rxvt_term, &rxvt_term::update_background_cb> (this); 157 update_background_ev.set<rxvt_term, &rxvt_term::update_background_cb> (this);
160#endif 158#endif
161#ifdef CURSOR_BLINK 159#ifdef CURSOR_BLINK
162 cursor_blink_ev.set <rxvt_term, &rxvt_term::cursor_blink_cb> (this); 160 cursor_blink_ev.set <rxvt_term, &rxvt_term::cursor_blink_cb> (this); cursor_blink_ev.set (0., CURSOR_BLINK_INTERVAL);
163#endif 161#endif
164#ifdef TEXT_BLINK 162#ifdef TEXT_BLINK
165 text_blink_ev.set <rxvt_term, &rxvt_term::text_blink_cb> (this); 163 text_blink_ev.set <rxvt_term, &rxvt_term::text_blink_cb> (this); text_blink_ev.set (0., TEXT_BLINK_INTERVAL);
166#endif 164#endif
167#ifndef NO_SCROLLBAR_BUTTON_CONTINUAL_SCROLLING 165#ifndef NO_SCROLLBAR_BUTTON_CONTINUAL_SCROLLING
168 cont_scroll_ev.set <rxvt_term, &rxvt_term::cont_scroll_cb> (this); 166 cont_scroll_ev.set <rxvt_term, &rxvt_term::cont_scroll_cb> (this);
169#endif 167#endif
170#ifdef SELECTION_SCROLLING 168#ifdef SELECTION_SCROLLING
329} 327}
330 328
331void 329void
332rxvt_term::destroy () 330rxvt_term::destroy ()
333{ 331{
334 if (destroy_ev.active) 332 if (ev_is_active (&destroy_ev))
335 return; 333 return;
336 334
337 HOOK_INVOKE ((this, HOOK_DESTROY, DT_END)); 335 HOOK_INVOKE ((this, HOOK_DESTROY, DT_END));
338 336
339#if ENABLE_OVERLAY 337#if ENABLE_OVERLAY
475 rxvt_emergency_cleanup (); 473 rxvt_emergency_cleanup ();
476 _exit (EXIT_FAILURE); 474 _exit (EXIT_FAILURE);
477} 475}
478 476
479/*----------------------------------------------------------------------*/ 477/*----------------------------------------------------------------------*/
480bool 478void
481rxvt_term::init (int argc, const char *const *argv, stringvec *envv) 479rxvt_term::init (int argc, const char *const *argv, stringvec *envv)
482{ 480{
483 this->envv = envv; 481 this->envv = envv;
484 482
485 SET_R (this); 483 SET_R (this);
486 set_locale (""); 484 set_locale ("");
487 set_environ (envv); // few things in X do not call setlocale :( 485 set_environ (envv); // few things in X do not call setlocale :(
488 486
489 if (!init_vars ()) 487 init_vars ();
490 return false;
491 488
492 init_secondary (); 489 init_secondary ();
493 490
494 const char **cmd_argv = init_resources (argc, argv); 491 const char **cmd_argv = init_resources (argc, argv);
495 492
589 } 586 }
590#endif 587#endif
591 588
592 XMapWindow (dpy, vt); 589 XMapWindow (dpy, vt);
593 XMapWindow (dpy, parent[0]); 590 XMapWindow (dpy, parent[0]);
594
595 return true;
596} 591}
597 592
598static struct sig_handlers 593static struct sig_handlers
599{ 594{
600 ev::sig sw_term, sw_int; 595 ev::sig sw_term, sw_int;
601 596
602 /* 597 /*
603 * Catch a fatal signal and tidy up before quitting 598 * Catch a fatal signal and tidy up before quitting
604 */ 599 */
605 void
606 sig_term (ev::sig &w, int revents) 600 void sig_term (ev::sig &w, int revents);
607 {
608 rxvt_emergency_cleanup ();
609 w.stop ();
610 kill (getpid (), w.signum);
611 }
612 601
613 sig_handlers () 602 sig_handlers ()
614 { 603 {
615 sw_term.set<sig_handlers, &sig_handlers::sig_term> (this); 604 sw_term.set<sig_handlers, &sig_handlers::sig_term> (this);
616 sw_int .set<sig_handlers, &sig_handlers::sig_term> (this); 605 sw_int .set<sig_handlers, &sig_handlers::sig_term> (this);
617 } 606 }
618} sig_handlers; 607} sig_handlers;
619 608
609void
610sig_handlers::sig_term (ev::sig &w, int revents)
611{
612 rxvt_emergency_cleanup ();
613 w.stop ();
614 kill (getpid (), w.signum);
615}
616
620char **rxvt_environ; // startup environment 617char **rxvt_environ; // startup environment
621 618
622void 619void
623rxvt_init () 620rxvt_init ()
624{ 621{
827 ws.ws_xpixel = width; 824 ws.ws_xpixel = width;
828 ws.ws_ypixel = height; 825 ws.ws_ypixel = height;
829 (void)ioctl (pty->pty, TIOCSWINSZ, &ws); 826 (void)ioctl (pty->pty, TIOCSWINSZ, &ws);
830 827
831#if 0 828#if 0
832 // TIOCSWINSZ is supposed to do this automatically and correctly 829 // TIOCSWINSZ is supposed to do this automatically and correctly
833 if (cmd_pid) /* force through to the command */ 830 if (cmd_pid) /* force through to the command */
834 kill (-cmd_pid, SIGWINCH); 831 kill (-cmd_pid, SIGWINCH);
835#endif 832#endif
836} 833}
837 834

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines