aboutsummaryrefslogtreecommitdiff
path: root/x.c
diff options
context:
space:
mode:
Diffstat (limited to 'x.c')
-rw-r--r--x.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/x.c b/x.c
index 873ff08..970d6dd 100644
--- a/x.c
+++ b/x.c
@@ -227,6 +227,8 @@ static char *opt_line = NULL;
227static char *opt_name = NULL; 227static char *opt_name = NULL;
228static char *opt_title = NULL; 228static char *opt_title = NULL;
229 229
230static int oldbutton = 3; /* button event on startup: 3 = release */
231
230void 232void
231clipcopy(const Arg *dummy) 233clipcopy(const Arg *dummy)
232{ 234{
@@ -1733,8 +1735,7 @@ cmessage(XEvent *e)
1733 win.mode &= ~MODE_FOCUSED; 1735 win.mode &= ~MODE_FOCUSED;
1734 } 1736 }
1735 } else if (e->xclient.data.l[0] == xw.wmdeletewin) { 1737 } else if (e->xclient.data.l[0] == xw.wmdeletewin) {
1736 /* Send SIGHUP to shell */ 1738 ttyhangup();
1737 kill(pid, SIGHUP);
1738 exit(0); 1739 exit(0);
1739 } 1740 }
1740} 1741}
@@ -1755,6 +1756,7 @@ run(void)
1755 int w = win.w, h = win.h; 1756 int w = win.w, h = win.h;
1756 fd_set rfd; 1757 fd_set rfd;
1757 int xfd = XConnectionNumber(xw.dpy), xev, blinkset = 0, dodraw = 0; 1758 int xfd = XConnectionNumber(xw.dpy), xev, blinkset = 0, dodraw = 0;
1759 int ttyfd;
1758 struct timespec drawtimeout, *tv = NULL, now, last, lastblink; 1760 struct timespec drawtimeout, *tv = NULL, now, last, lastblink;
1759 long deltatime; 1761 long deltatime;
1760 1762
@@ -1774,7 +1776,7 @@ run(void)
1774 } 1776 }
1775 } while (ev.type != MapNotify); 1777 } while (ev.type != MapNotify);
1776 1778
1777 ttynew(opt_line, opt_io, opt_cmd); 1779 ttyfd = ttynew(opt_line, shell, opt_io, opt_cmd);
1778 cresize(w, h); 1780 cresize(w, h);
1779 1781
1780 clock_gettime(CLOCK_MONOTONIC, &last); 1782 clock_gettime(CLOCK_MONOTONIC, &last);
@@ -1782,15 +1784,15 @@ run(void)
1782 1784
1783 for (xev = actionfps;;) { 1785 for (xev = actionfps;;) {
1784 FD_ZERO(&rfd); 1786 FD_ZERO(&rfd);
1785 FD_SET(cmdfd, &rfd); 1787 FD_SET(ttyfd, &rfd);
1786 FD_SET(xfd, &rfd); 1788 FD_SET(xfd, &rfd);
1787 1789
1788 if (pselect(MAX(xfd, cmdfd)+1, &rfd, NULL, NULL, tv, NULL) < 0) { 1790 if (pselect(MAX(xfd, ttyfd)+1, &rfd, NULL, NULL, tv, NULL) < 0) {
1789 if (errno == EINTR) 1791 if (errno == EINTR)
1790 continue; 1792 continue;
1791 die("select failed: %s\n", strerror(errno)); 1793 die("select failed: %s\n", strerror(errno));
1792 } 1794 }
1793 if (FD_ISSET(cmdfd, &rfd)) { 1795 if (FD_ISSET(ttyfd, &rfd)) {
1794 ttyread(); 1796 ttyread();
1795 if (blinktimeout) { 1797 if (blinktimeout) {
1796 blinkset = tattrset(ATTR_BLINK); 1798 blinkset = tattrset(ATTR_BLINK);
@@ -1834,7 +1836,7 @@ run(void)
1834 1836
1835 if (xev && !FD_ISSET(xfd, &rfd)) 1837 if (xev && !FD_ISSET(xfd, &rfd))
1836 xev--; 1838 xev--;
1837 if (!FD_ISSET(cmdfd, &rfd) && !FD_ISSET(xfd, &rfd)) { 1839 if (!FD_ISSET(ttyfd, &rfd) && !FD_ISSET(xfd, &rfd)) {
1838 if (blinkset) { 1840 if (blinkset) {
1839 if (TIMEDIFF(now, lastblink) \ 1841 if (TIMEDIFF(now, lastblink) \
1840 > blinktimeout) { 1842 > blinktimeout) {