Introduction
Introduction Statistics Contact Development Disclaimer Help
tchanged main event loop - dwm - [fork] customized build of dwm, the dynamic wi…
git clone git://src.adamsgaard.dk/dwm
Log
Files
Refs
README
LICENSE
---
commit b6ad663f87b195b1494798030f826cb2fbc71a23
parent ee31e38dc75832a66cb0fc01bcf2f419ac96a20b
Author: Anselm R.Garbe <[email protected]>
Date: Tue, 15 Aug 2006 07:31:42 +0200
changed main event loop
Diffstat:
M dwm.h | 1 +
M event.c | 13 +++++++++++++
M main.c | 17 +++++++----------
3 files changed, 21 insertions(+), 10 deletions(-)
---
diff --git a/dwm.h b/dwm.h
t@@ -108,6 +108,7 @@ extern unsigned int textw(const char *text);
/* event.c */
extern void grabkeys();
+extern void procevent();
/* main.c */
extern int getproto(Window w);
diff --git a/event.c b/event.c
t@@ -384,3 +384,16 @@ grabkeys()
GrabModeAsync, GrabModeAsync);
}
}
+
+void
+procevent()
+{
+ XEvent ev;
+
+ while(XPending(dpy)) {
+ XNextEvent(dpy, &ev);
+ if(handler[ev.type])
+ (handler[ev.type])(&ev); /* call handler */
+ }
+}
+
diff --git a/main.c b/main.c
t@@ -27,7 +27,9 @@ cleanup()
resize(sel, True, TopLeft);
unmanage(sel);
}
+ XUngrabKey(dpy, AnyKey, AnyModifier, root);
XSetInputFocus(dpy, PointerRoot, RevertToPointerRoot, CurrentTime);
+ XSync(dpy, False);
}
static void
t@@ -37,6 +39,7 @@ scan()
Window *wins, d1, d2;
XWindowAttributes wa;
+ wins = NULL;
if(XQueryTree(dpy, root, &d1, &d2, &wins, &num)) {
for(i = 0; i < num; i++) {
if(!XGetWindowAttributes(dpy, wins[i], &wa))
t@@ -168,7 +171,6 @@ main(int argc, char *argv[])
fd_set rd;
Bool readin = True;
Window w;
- XEvent ev;
XModifierKeymap *modmap;
XSetWindowAttributes wa;
t@@ -196,6 +198,7 @@ main(int argc, char *argv[])
if(otherwm)
eprint("dwm: another window manager is already running\n");
+ XSync(dpy, False);
XSetErrorHandler(NULL);
xerrorxlib = XSetErrorHandler(xerror);
XSync(dpy, False);
t@@ -268,7 +271,7 @@ main(int argc, char *argv[])
/* main event loop, also reads status text from stdin */
XSync(dpy, False);
- goto XLoop;
+ procevent();
while(running) {
FD_ZERO(&rd);
if(readin)
t@@ -288,14 +291,8 @@ main(int argc, char *argv[])
strcpy(stext, "broken pipe");
drawstatus();
}
- if(FD_ISSET(xfd, &rd)) {
-XLoop:
- while(XPending(dpy)) {
- XNextEvent(dpy, &ev);
- if(handler[ev.type])
- (handler[ev.type])(&ev); /* ca…
- }
- }
+ if(FD_ISSET(xfd, &rd))
+ procevent();
}
}
cleanup();
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.