ALT Linux Bugzilla
– Attachment 3731 Details for
Bug 16028
[FR] replace polling with something more sleep-friendly?
New bug
|
Search
|
[?]
|
Help
Register
|
Log In
[x]
|
Forgot Password
Login:
[x]
|
EN
|
RU
[patch]
debian patch
wmclock-1.0.12.2-debian-nopolling.patch (text/plain), 2.03 KB, created by
Michael Shigorin
on 2009-08-10 15:47:51 MSD
(
hide
)
Description:
debian patch
Filename:
MIME Type:
Creator:
Michael Shigorin
Created:
2009-08-10 15:47:51 MSD
Size:
2.03 KB
patch
obsolete
>diff -Naur wmclock-1.0.12.2-orig/wmclock.c wmclock-1.0.12.2/wmclock.c >--- wmclock-1.0.12.2-orig/wmclock.c 2000-03-08 09:31:33 +0200 >+++ wmclock-1.0.12.2/wmclock.c 2009-01-17 22:35:38 +0200 >@@ -20,6 +20,7 @@ > * with the software or the use or other dealings in the software. > */ > >+#include <sys/select.h> > #include <sys/types.h> > #include <sys/wait.h> > #include <sys/time.h> >@@ -141,7 +142,8 @@ > Display *dpy; > Window rootWindow; > int screen; >-/* int xFd; */ >+int xFd; >+fd_set xFdSet; > int displayDepth; > XSizeHints sizeHints; > XWMHints wmHints; >@@ -801,6 +803,7 @@ > XTextProperty wmName; > XClassHint classHint; > Pixmap shapeMask; >+ struct timeval nextEvent; > > /* Parse command line options */ > progName = extractProgName(argv[0]); >@@ -842,7 +845,7 @@ > screen = DefaultScreen(dpy); > rootWindow = RootWindow(dpy, screen); > displayDepth = DefaultDepth(dpy, screen); >- /* xFd = XConnectionNumber(dpy); */ >+ xFd = XConnectionNumber(dpy); > > /* Icon Daten nach XImage konvertieren */ > GetXpms(); >@@ -1042,14 +1045,32 @@ > poll((struct poll *) 0, (size_t) 0, 50); /* 5/100 sec */ > } > #else >- if (enableYearDisplay) >- { >- usleep(200000L); /* 1/5 sec */ >- } >+ //We compute the date of next event, in order to avoid polling >+ if (enableBlinking) >+ { >+ gettimeofday(&nextEvent,NULL); >+ nextEvent.tv_sec = 0; >+ nextEvent.tv_usec = 1000000-nextEvent.tv_usec; >+ } > else >- { >- usleep(50000L); /* 5/100 sec */ >- } >+ { >+ if (enableYearDisplay) >+ { >+ nextEvent.tv_sec = 86400-actualTime%86400; >+ nextEvent.tv_usec = 0; >+ } >+ else >+ { >+ nextEvent.tv_sec = 60-actualTime%60; >+ nextEvent.tv_usec = 0; >+ } >+ } >+// printf("xFd %d\n", xFd); >+ FD_ZERO(&xFdSet); >+ FD_SET(xFd,&xFdSet); >+// printf("debut select %d\n", nextEvent.tv_sec); >+ select(FD_SETSIZE,&xFdSet,NULL,NULL,&nextEvent); >+// printf("fin select\n"); > #endif > } > return(0);
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 16028
: 3731 |
3732