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.255 by ayin, Wed Oct 31 09:55:23 2007 UTC vs.
Revision 1.262 by ayin, Wed Nov 21 09:15:33 2007 UTC

181#endif 181#endif
182#ifdef POINTER_BLANK 182#ifdef POINTER_BLANK
183 pointer_ev (this, &rxvt_term::pointer_cb), 183 pointer_ev (this, &rxvt_term::pointer_cb),
184#endif 184#endif
185#ifdef USE_XIM 185#ifdef USE_XIM
186 im_ev (this, &rxvt_term::im_cb), 186 im_ev (this, &rxvt_term::im_cb),
187#endif 187#endif
188#ifndef NO_BELL 188#ifndef NO_BELL
189 bell_ev (this, &rxvt_term::bell_cb), 189 bell_ev (this, &rxvt_term::bell_cb),
190#endif 190#endif
191 termwin_ev (this, &rxvt_term::x_cb), 191 termwin_ev (this, &rxvt_term::x_cb),
192 vt_ev (this, &rxvt_term::x_cb), 192 vt_ev (this, &rxvt_term::x_cb),
193 child_ev (this, &rxvt_term::child_cb), 193 child_ev (this, &rxvt_term::child_cb),
194 check_ev (this, &rxvt_term::check_cb), 194 prepare_ev (this, &rxvt_term::prepare_cb),
195 flush_ev (this, &rxvt_term::flush_cb), 195 flush_ev (this, &rxvt_term::flush_cb),
196 destroy_ev (this, &rxvt_term::destroy_cb), 196 destroy_ev (this, &rxvt_term::destroy_cb),
197 pty_ev (this, &rxvt_term::pty_cb), 197 pty_ev (this, &rxvt_term::pty_cb),
198 incr_ev (this, &rxvt_term::incr_cb) 198 incr_ev (this, &rxvt_term::incr_cb)
199{ 199{
200 cmdbuf_ptr = cmdbuf_endp = cmdbuf_base; 200 cmdbuf_ptr = cmdbuf_endp = cmdbuf_base;
201 201
202 termlist.push_back (this); 202 termlist.push_back (this);
203 203
284 delete [] pix_colors_focused; 284 delete [] pix_colors_focused;
285#if OFF_FOCUS_FADING 285#if OFF_FOCUS_FADING
286 delete [] pix_colors_unfocused; 286 delete [] pix_colors_unfocused;
287#endif 287#endif
288 288
289#ifdef HAVE_BG_PIXMAP
290 bgPixmap.destroy ();
291#endif
289 displays.put (display); 292 displays.put (display);
290 293
291 scr_release (); 294 scr_release ();
292 295
293 /* clear all resources */ 296 /* clear all resources */
310#endif 313#endif
311} 314}
312 315
313// child has exited, usually destroys 316// child has exited, usually destroys
314void 317void
315rxvt_term::child_cb (child_watcher &w, int status) 318rxvt_term::child_cb (ev::child &w, int status)
316{ 319{
317 HOOK_INVOKE ((this, HOOK_CHILD_EXIT, DT_INT, status, DT_END)); 320 HOOK_INVOKE ((this, HOOK_CHILD_EXIT, DT_INT, status, DT_END));
318 321
319 cmd_pid = 0; 322 cmd_pid = 0;
320 323
348 incr_ev.stop (); 351 incr_ev.stop ();
349 termwin_ev.stop (display); 352 termwin_ev.stop (display);
350 vt_ev.stop (display); 353 vt_ev.stop (display);
351 } 354 }
352 355
353 check_ev.stop (); 356 prepare_ev.stop ();
354 pty_ev.stop (); 357 pty_ev.stop ();
355#ifdef CURSOR_BLINK 358#ifdef CURSOR_BLINK
356 cursor_blink_ev.stop (); 359 cursor_blink_ev.stop ();
357#endif 360#endif
358#ifdef TEXT_BLINK 361#ifdef TEXT_BLINK
366#endif 369#endif
367#ifdef POINTER_BLANK 370#ifdef POINTER_BLANK
368 pointer_ev.stop (); 371 pointer_ev.stop ();
369#endif 372#endif
370 373
371 destroy_ev.start (0); 374 destroy_ev.start ();
372} 375}
373 376
374void 377void
375rxvt_term::destroy_cb (time_watcher &w) 378rxvt_term::destroy_cb (ev::idle &w, int revents)
376{ 379{
377 make_current (); 380 make_current ();
378 381
379 delete this; 382 delete this;
380} 383}
565 init_command (cmd_argv); 568 init_command (cmd_argv);
566 569
567 free (cmd_argv); 570 free (cmd_argv);
568 571
569 if (pty->pty >= 0) 572 if (pty->pty >= 0)
570 pty_ev.start (pty->pty, EVENT_READ); 573 pty_ev.start (pty->pty, ev::READ);
571 574
572 check_ev.start (); 575 prepare_ev.start ();
573 576
574 HOOK_INVOKE ((this, HOOK_START, DT_END)); 577 HOOK_INVOKE ((this, HOOK_START, DT_END));
575 578
576#if ENABLE_XEMBED 579#if ENABLE_XEMBED
577 if (rs[Rs_embed]) 580 if (rs[Rs_embed])
589 return true; 592 return true;
590} 593}
591 594
592static struct sig_handlers 595static struct sig_handlers
593{ 596{
594 sig_watcher sw_term, sw_int; 597 ev::sig sw_term, sw_int;
595 598
596 /* 599 /*
597 * Catch a fatal signal and tidy up before quitting 600 * Catch a fatal signal and tidy up before quitting
598 */ 601 */
599 void 602 void
600 sig_term (sig_watcher &w) 603 sig_term (ev::sig &w, int revents)
601 { 604 {
602 rxvt_emergency_cleanup (); 605 rxvt_emergency_cleanup ();
603 signal (w.signum, SIG_DFL); 606 w.stop ();
604 kill (getpid (), w.signum); 607 kill (getpid (), w.signum);
605 } 608 }
606 609
607 sig_handlers () 610 sig_handlers ()
608 : sw_term (this, &sig_handlers::sig_term), 611 : sw_term (this, &sig_handlers::sig_term),
616void 619void
617rxvt_init () 620rxvt_init ()
618{ 621{
619 ptytty::init (); 622 ptytty::init ();
620 623
624 if (!ev::ev_default_loop (0))
625 rxvt_fatal ("cannot initialise libev (bad value for LIBEV_METHODS?)\n");
626
621 rxvt_environ = environ; 627 rxvt_environ = environ;
622 628
623 signal (SIGHUP, SIG_IGN); 629 signal (SIGHUP, SIG_IGN);
624 signal (SIGPIPE, SIG_IGN); 630 signal (SIGPIPE, SIG_IGN);
625 631
626 sig_handlers.sw_term.start (SIGTERM); 632 sig_handlers.sw_term.start (SIGTERM); ev::ev_unref ();
627 sig_handlers.sw_int.start (SIGINT); 633 sig_handlers.sw_int.start (SIGINT); ev::ev_unref ();
628 634
629 /* need to trap SIGURG for SVR4 (Unixware) rlogin */ 635 /* need to trap SIGURG for SVR4 (Unixware) rlogin */
630 /* signal (SIGURG, SIG_DFL); */ 636 /* signal (SIGURG, SIG_DFL); */
631 637
632 old_xerror_handler = XSetErrorHandler ((XErrorHandler) rxvt_xerror_handler); 638 old_xerror_handler = XSetErrorHandler ((XErrorHandler) rxvt_xerror_handler);
1000 /*TODO: handle Color_BD, scrollbar background, etc. */ 1006 /*TODO: handle Color_BD, scrollbar background, etc. */
1001 1007
1002 update_fade_color (idx); 1008 update_fade_color (idx);
1003 recolour_cursor (); 1009 recolour_cursor ();
1004 scr_recolour (); 1010 scr_recolour ();
1005#endif /* XTERM_COLOR_CHANGE */ 1011#endif /* XTERM_COLOR_CHANGE */
1006} 1012}
1007 1013
1008void 1014void
1009rxvt_term::recolour_cursor () 1015rxvt_term::recolour_cursor ()
1010{ 1016{
1703 XFree (status_attr); 1709 XFree (status_attr);
1704 } 1710 }
1705 1711
1706 XFree (preedit_attr); 1712 XFree (preedit_attr);
1707} 1713}
1708#endif /* USE_XIM */ 1714#endif /* USE_XIM */
1709 1715
1710void 1716void
1711rxvt_term::get_window_origin (int &x, int &y) 1717rxvt_term::get_window_origin (int &x, int &y)
1712{ 1718{
1713 Window cr; 1719 Window cr;
1735 } 1741 }
1736 return None; 1742 return None;
1737} 1743}
1738 1744
1739#ifdef HAVE_BG_PIXMAP 1745#ifdef HAVE_BG_PIXMAP
1746# if TRACE_PIXMAPS
1747# undef update_background
1748int rxvt_term::trace_update_background (const char* file, int line)
1749{
1750 fprintf (stderr, "%s:%d:update_background()\n", file, line);
1751 update_background ();
1752}
1753# endif
1740int 1754int
1741rxvt_term::update_background () 1755rxvt_term::update_background ()
1742{ 1756{
1743 bgPixmap.invalidate (); 1757 bgPixmap.invalidate ();
1744 1758
1745 /* no chance of real time refresh if we are blurring ! */ 1759 /* no chance of real time refresh if we are blurring! */
1746 if (bgPixmap.invalid_since + 0.5 < NOW && !(bgPixmap.flags & bgPixmap_t::blurNeeded)) 1760 if (bgPixmap.invalid_since + 0.5 < ev::now () && !(bgPixmap.flags & bgPixmap_t::blurNeeded))
1747 bgPixmap.render (); 1761 bgPixmap.render ();
1748 else 1762 else
1749 { 1763 {
1750 update_background_ev.stop (); 1764 update_background_ev.stop ();
1765
1751 if (!bgPixmap.need_client_side_rendering()) 1766 if (!bgPixmap.need_client_side_rendering())
1752 update_background_ev.start (NOW + .05); 1767 update_background_ev.start (.05);
1753 else if (bgPixmap.flags & bgPixmap_t::blurNeeded) 1768 else if (bgPixmap.flags & bgPixmap_t::blurNeeded)
1754 update_background_ev.start (NOW + .2); /* very slow !!! */ 1769 update_background_ev.start (.20); /* very slow !!! */
1755 else 1770 else
1756 update_background_ev.start (NOW + .07); 1771 update_background_ev.start (.07);
1757 } 1772 }
1773
1758 return 0; 1774 return 0;
1759} 1775}
1760 1776
1761void 1777void
1762rxvt_term::update_background_cb (time_watcher &w) 1778rxvt_term::update_background_cb (ev::timer &w, int revents)
1763{ 1779{
1764 bgPixmap.render (); 1780 bgPixmap.render ();
1765} 1781}
1766 1782
1767#endif /* HAVE_BG_PIXMAP */ 1783#endif /* HAVE_BG_PIXMAP */

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines