Magellan Linux

Annotation of /trunk/slim/patches/slim-1.3.2-fix-SIGTERM-freeze.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1262 - (hide annotations) (download)
Thu Jan 27 23:28:25 2011 UTC (13 years, 4 months ago) by niro
File size: 1284 byte(s)
added slim patches from upstream
1 niro 1262 https://bugs.gentoo.org/show_bug.cgi?id=261359
2     http://developer.berlios.de/bugs/?func=detailbug&bug_id=15326&group_id=2663
3    
4     diff --git a/panel.cpp b/panel.cpp
5     index 032574d..075c008 100644
6     --- a/panel.cpp
7     +++ b/panel.cpp
8     @@ -10,6 +10,7 @@
9     */
10    
11     #include <sstream>
12     +#include <poll.h>
13     #include "panel.h"
14    
15     using namespace std;
16     @@ -288,16 +289,24 @@ void Panel::EventHandler(const Panel::FieldType& curfield) {
17     field=curfield;
18     bool loop = true;
19     OnExpose();
20     +
21     + struct pollfd x11_pfd = {0};
22     + x11_pfd.fd = ConnectionNumber(Dpy);
23     + x11_pfd.events = POLLIN;
24     while(loop) {
25     - XNextEvent(Dpy, &event);
26     - switch(event.type) {
27     - case Expose:
28     - OnExpose();
29     - break;
30     + if(XPending(Dpy) || poll(&x11_pfd, 1, -1) > 0) {
31     + while(XPending(Dpy)) {
32     + XNextEvent(Dpy, &event);
33     + switch(event.type) {
34     + case Expose:
35     + OnExpose();
36     + break;
37    
38     - case KeyPress:
39     - loop=OnKeyPress(event);
40     - break;
41     + case KeyPress:
42     + loop=OnKeyPress(event);
43     + break;
44     + }
45     + }
46     }
47     }
48