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.332 by sf-exg, Wed Jul 28 17:56:16 2010 UTC vs.
Revision 1.341 by sf-exg, Sun Dec 12 23:13:29 2010 UTC

11 * Copyright (c) 1997 mj olesen <olesen@me.QueensU.CA> 11 * Copyright (c) 1997 mj olesen <olesen@me.QueensU.CA>
12 * - extensive modifications 12 * - extensive modifications
13 * Copyright (c) 1997,1998 Oezguer Kesim <kesim@math.fu-berlin.de> 13 * Copyright (c) 1997,1998 Oezguer Kesim <kesim@math.fu-berlin.de>
14 * Copyright (c) 1998-2001 Geoff Wing <gcw@pobox.com> 14 * Copyright (c) 1998-2001 Geoff Wing <gcw@pobox.com>
15 * - extensive modifications 15 * - extensive modifications
16 * Copyright (c) 2003-2008 Marc Lehmann <pcg@goof.com> 16 * Copyright (c) 2003-2010 Marc Lehmann <pcg@goof.com>
17 * 17 *
18 * This program is free software; you can redistribute it and/or modify 18 * This program is free software; you can redistribute it and/or modify
19 * it under the terms of the GNU General Public License as published by 19 * it under the terms of the GNU General Public License as published by
20 * the Free Software Foundation; either version 2 of the License, or 20 * the Free Software Foundation; either version 2 of the License, or
21 * (at your option) any later version. 21 * (at your option) any later version.
359rxvt_term::destroy_cb (ev::idle &w, int revents) 359rxvt_term::destroy_cb (ev::idle &w, int revents)
360{ 360{
361 make_current (); 361 make_current ();
362 362
363 delete this; 363 delete this;
364}
365
366void
367rxvt_term::set_option (uint8_t opt, bool set)
368{
369 if (!opt)
370 return;
371
372 uint8_t mask = 1 << (opt & 7);
373 uint8_t &val = options [opt >> 3];
374
375 val = val & ~mask | (set ? mask : 0);
364} 376}
365 377
366/*----------------------------------------------------------------------*/ 378/*----------------------------------------------------------------------*/
367/* 379/*
368 * Exit gracefully, clearing the utmp entry and restoring tty attributes 380 * Exit gracefully, clearing the utmp entry and restoring tty attributes
511 tio->c_cc[VWERSE] = CWERASE; 523 tio->c_cc[VWERSE] = CWERASE;
512# endif 524# endif
513# ifdef VLNEXT 525# ifdef VLNEXT
514 tio->c_cc[VLNEXT] = CLNEXT; 526 tio->c_cc[VLNEXT] = CLNEXT;
515# endif 527# endif
528# ifdef VSTATUS
529 tio->c_cc[VSTATUS] = CSTATUS;
530# endif
516 531
517# if VMIN != VEOF 532# if VMIN != VEOF
518 tio->c_cc[VMIN] = 1; 533 tio->c_cc[VMIN] = 1;
519# endif 534# endif
520# if VTIME != VEOL 535# if VTIME != VEOL
554 569
555 // get rid of stdin/stdout as we don't need them, to free resources 570 // get rid of stdin/stdout as we don't need them, to free resources
556 dup2 (STDERR_FILENO, STDIN_FILENO); 571 dup2 (STDERR_FILENO, STDIN_FILENO);
557 dup2 (STDERR_FILENO, STDOUT_FILENO); 572 dup2 (STDERR_FILENO, STDOUT_FILENO);
558 573
559 ptytty::init ();
560
561 if (!ev_default_loop (0)) 574 if (!ev_default_loop ())
562 rxvt_fatal ("cannot initialise libev (bad value for LIBEV_METHODS?)\n"); 575 rxvt_fatal ("cannot initialise libev (bad value for LIBEV_METHODS?)\n");
563 576
564 rxvt_environ = environ; 577 rxvt_environ = environ;
565 578
566 signal (SIGHUP, SIG_IGN); 579 signal (SIGHUP, SIG_IGN);
1626void 1639void
1627rxvt_term::get_window_origin (int &x, int &y) 1640rxvt_term::get_window_origin (int &x, int &y)
1628{ 1641{
1629 Window cr; 1642 Window cr;
1630 XTranslateCoordinates (dpy, parent[0], display->root, 0, 0, &x, &y, &cr); 1643 XTranslateCoordinates (dpy, parent[0], display->root, 0, 0, &x, &y, &cr);
1631/* fprintf (stderr, "origin is %+d%+d\n", x, y);*/
1632} 1644}
1633 1645
1634Pixmap 1646Pixmap
1635rxvt_term::get_pixmap_property (int prop_id) 1647rxvt_term::get_pixmap_property (int prop_id)
1636{ 1648{
1649 Pixmap pixmap = None;
1650
1637 if (prop_id > 0 && prop_id < NUM_XA) 1651 if (prop_id > 0 && prop_id < NUM_XA)
1638 if (xa[prop_id]) 1652 if (xa[prop_id])
1639 { 1653 {
1640 int aformat; 1654 int aformat;
1641 unsigned long nitems, bytes_after; 1655 unsigned long nitems, bytes_after;
1642 Atom atype; 1656 Atom atype;
1643 unsigned char *prop = NULL; 1657 unsigned char *prop;
1644 int result = XGetWindowProperty (dpy, display->root, xa[prop_id], 1658 int result = XGetWindowProperty (dpy, display->root, xa[prop_id],
1645 0L, 1L, False, XA_PIXMAP, &atype, &aformat, 1659 0L, 1L, False, XA_PIXMAP, &atype, &aformat,
1646 &nitems, &bytes_after, &prop); 1660 &nitems, &bytes_after, &prop);
1647 if (result == Success && prop && atype == XA_PIXMAP) 1661 if (result == Success)
1662 {
1663 if (atype == XA_PIXMAP)
1648 return *(Pixmap *)prop; 1664 pixmap = *(Pixmap *)prop;
1665 XFree (prop);
1666 }
1649 } 1667 }
1650 1668
1651 return None; 1669 return pixmap;
1652} 1670}
1653 1671
1654#ifdef HAVE_BG_PIXMAP 1672#ifdef HAVE_BG_PIXMAP
1655# if TRACE_PIXMAPS
1656# undef update_background
1657void
1658rxvt_term::trace_update_background (const char *file, int line)
1659{
1660 fprintf (stderr, "%s:%d:update_background()\n", file, line);
1661 update_background ();
1662}
1663# endif
1664 1673
1665void 1674void
1666rxvt_term::update_background () 1675rxvt_term::update_background ()
1667{ 1676{
1668 if (update_background_ev.is_active ()) 1677 if (update_background_ev.is_active ())

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines