>From the Debian patch:
http://sources.debian.net/src/wmclock/1.0.14-6/debian/patches/add_interval_option.patch/

For more information, see:
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=228986
---
 wmclock/wmclock.c      | 71 ++++++++++++++++++++++++++++++++++----------------
 wmclock/wmclock.man.in |  5 ++++
 2 files changed, 54 insertions(+), 22 deletions(-)

diff --git a/wmclock/wmclock.c b/wmclock/wmclock.c
index 3feb937..25ac7da 100644
--- a/wmclock/wmclock.c
+++ b/wmclock/wmclock.c
@@ -146,6 +146,7 @@ int enableShapedWindow = 1; /* default value is noshape */
 int enableBlinking = 1;                /* default is blinking */
 int startIconified = 0;                /* default is not iconified */
 int enableYearDisplay = 0;     /* default is to show time, not year */
+int blinkInterval = 2;          /* default is a 2-second blink cycle */
 
 int timePos12[NUM_TIME_POSITIONS]  = { 5, 14, 24, 28, 37 };
 int timePos24[NUM_TIME_POSITIONS]  = { 4,  8, 17, 22, 31 };
@@ -207,6 +208,7 @@ char *usageText[] = {
 "    -24                     show 24-hour time",
 "    -year                   show year instead of time",
 "    -noblink                don't blink",
+"    -interval <seconds>     set blink interval",
 "    -exe <command>          start <command> on mouse click",
 "    -led <color>            use <color> as color of led",
 #ifndef ONLY_SHAPED_WINDOW
@@ -799,6 +801,16 @@ int processArgs(int argc, char **argv)
        {
           showUsage();
        }
+       else if ((0 == strcmp(argv[i], "-interval")) ||
+               (0 == strcmp(argv[i], "--interval")))
+       {
+          if (++i >= argc)
+           {
+              showUsage();
+           }
+          blinkInterval = atoi(argv[i]);
+       }
+
        else
        {
           fprintf(stderr, "%s: unrecognized option `%s'\n",
@@ -822,6 +834,7 @@ int main(int argc, char **argv)
    XClassHint    classHint;
    Pixmap        shapeMask;
    struct timeval nextEvent;
+   unsigned int   blinkCounter = 0;
    
    /* Parse command line options */
    progName = extractProgName(argv[0]);
@@ -962,26 +975,6 @@ int main(int argc, char **argv)
                  redrawWindow(&visible);
                }
            }
-         if (enableBlinking && (!enableYearDisplay))
-           {  
-              if (actualTime % 2)
-               {
-                  /* Sekunden Doppelpunkt ein */
-                  XCopyArea(dpy, led.pixmap, visible.pixmap, normalGC,
-                            COLON_X_OFFSET, COLON_Y_OFFSET,
-                            COLON_WIDTH, COLON_HEIGHT,
-                            xPos[COLON_X_POS], yPos[COLON_Y_POS]);
-               }
-              else
-               {
-                  /* Sekunden Doppelpunkt aus */
-                  XCopyArea(dpy, led.pixmap, visible.pixmap, normalGC,
-                            BLANK_X_OFFSET, BLANK_Y_OFFSET,
-                            COLON_WIDTH, COLON_HEIGHT,
-                            xPos[COLON_X_POS], yPos[COLON_Y_POS]);
-               }
-              redrawWindow(&visible);
-           }
           if (0 == (actualTime % 2))
            {
               /* Clean up zombie processes */
@@ -995,7 +988,38 @@ int main(int argc, char **argv)
                }
            }
        }
-       
+       if (enableBlinking && (!enableYearDisplay))
+        {
+            blinkCounter++;
+#ifdef SYSV
+            if (blinkCounter >= 20*blinkInterval)
+#else
+            if (blinkCounter >= 2*blinkInterval)
+#endif
+                blinkCounter = 0;
+            if (blinkCounter == 0)
+            {
+                /* Sekunden Doppelpunkt ein */
+               XCopyArea(dpy, led.pixmap, visible.pixmap, normalGC,
+                         COLON_X_OFFSET, COLON_Y_OFFSET,
+                         COLON_WIDTH, COLON_HEIGHT,
+                         xPos[COLON_X_POS], yPos[COLON_Y_POS]);
+            }
+#ifdef SYSV
+           if (blinkCounter == 10*blinkInterval)
+#else
+           if (blinkCounter == blinkInterval)
+#endif
+            {
+                   /* Sekunden Doppelpunkt aus */
+                   XCopyArea(dpy, led.pixmap, visible.pixmap, normalGC,
+                             BLANK_X_OFFSET, BLANK_Y_OFFSET,
+                             COLON_WIDTH, COLON_HEIGHT,
+                             xPos[COLON_X_POS], yPos[COLON_Y_POS]);
+            }
+           redrawWindow(&visible);
+        }
+
        /* read a packet */
        while (XPending(dpy))
        {
@@ -1075,7 +1099,10 @@ int main(int argc, char **argv)
         {
           gettimeofday(&nextEvent,NULL);
           nextEvent.tv_sec = 0;
-          nextEvent.tv_usec = 1000000-nextEvent.tv_usec;
+          if (nextEvent.tv_usec < 500000)
+                  nextEvent.tv_usec = 500000-nextEvent.tv_usec;
+          else
+                  nextEvent.tv_usec = 1000000-nextEvent.tv_usec;
         }
        else
         {
diff --git a/wmclock/wmclock.man.in b/wmclock/wmclock.man.in
index 8d38c2d..4b399f2 100644
--- a/wmclock/wmclock.man.in
+++ b/wmclock/wmclock.man.in
@@ -61,6 +61,11 @@ The separator between the hours and minutes in the time 
display blinks
 by default.  This option turns off the blinking and displays a steadily
 lit separator instead.
 .TP
+\fB\-interval\fI n\fR
+Set the blink cycle to
+.I n
+seconds.  The default is 2 (1 second on, 1 second off).
+.TP
 \fB\-version\fB
 Displays the version of Wmclock.
 .TP
-- 
2.1.0


-- 
To unsubscribe, send mail to wmaker-dev-unsubscr...@lists.windowmaker.org.

Reply via email to