From owner-freebsd-ports Thu Nov 20 13:20:10 1997 Return-Path: Received: (from root@localhost) by hub.freebsd.org (8.8.7/8.8.7) id NAA08524 for ports-outgoing; Thu, 20 Nov 1997 13:20:10 -0800 (PST) (envelope-from owner-freebsd-ports) Received: (from gnats@localhost) by hub.freebsd.org (8.8.7/8.8.7) id NAA08469; Thu, 20 Nov 1997 13:20:05 -0800 (PST) (envelope-from gnats) Resent-Date: Thu, 20 Nov 1997 13:20:05 -0800 (PST) Resent-Message-Id: <199711202120.NAA08469@hub.freebsd.org> Resent-From: gnats (GNATS Management) Resent-To: freebsd-ports Resent-Reply-To: FreeBSD-gnats@FreeBSD.ORG, vanilla@MinJe.com.TW Received: from MinJe.com.TW (ns.MinJe.com.TW [210.66.86.1]) by hub.freebsd.org (8.8.7/8.8.7) with SMTP id NAA07616 for ; Thu, 20 Nov 1997 13:10:10 -0800 (PST) (envelope-from vanilla@MinJe.com.TW) Received: (qmail 20077 invoked by uid 900); 20 Nov 1997 21:02:24 -0000 Message-Id: <19971120210224.20076.qmail@MinJe.com.TW> Date: 20 Nov 1997 21:02:24 -0000 From: vanilla@MinJe.com.TW Reply-To: vanilla@MinJe.com.TW To: FreeBSD-gnats-submit@FreeBSD.ORG X-Send-Pr-Version: 3.2 Subject: ports/5114: Update xboing to 2.4 Sender: owner-freebsd-ports@FreeBSD.ORG X-Loop: FreeBSD.org Precedence: bulk >Number: 5114 >Category: ports >Synopsis: Update xboing to 2.4 >Confidential: yes >Severity: non-critical >Priority: low >Responsible: freebsd-ports >State: open >Class: change-request >Submitter-Id: current-users >Arrival-Date: Thu Nov 20 13:20:03 PST 1997 >Last-Modified: >Originator: Vanill I. Shu >Organization: Cray running FreeBSD >Release: FreeBSD 3.0-CURRENT i386 >Environment: >Description: Update xboing to 2.4, add a patch from MASTER_SITE_XCONTRIB >How-To-Repeat: >Fix: diff -ruN xboing.orig/Makefile xboing/Makefile --- xboing.orig/Makefile Fri Jan 3 17:37:00 1997 +++ xboing/Makefile Thu Nov 20 02:57:37 1997 @@ -1,12 +1,12 @@ # New ports collection makefile for: xboing -# Version required: 2.3 +# Version required: 2.4 # Date created: 31 January 1995 # Whom: janek # # $Id: Makefile,v 1.8 1997/01/03 09:37:00 obrien Exp $ -DISTNAME= xboing2.3 -PKGNAME= xboing-2.3 +DISTNAME= xboing2.4 +PKGNAME= xboing-2.4 CATEGORIES= games MASTER_SITES= ${MASTER_SITE_XCONTRIB} MASTER_SITE_SUBDIR= games diff -ruN xboing.orig/files/md5 xboing/files/md5 --- xboing.orig/files/md5 Sat Apr 8 13:06:17 1995 +++ xboing/files/md5 Thu Nov 20 03:25:34 1997 @@ -1 +1 @@ -MD5 (xboing2.3.tar.gz) = c73134a6121fdd7bc8e730114afc2ad8 +MD5 (xboing2.4.tar.gz) = d596d29e53cf0deceb18f3b646787709 diff -ruN xboing.orig/patches/patch-aa xboing/patches/patch-aa --- xboing.orig/patches/patch-aa Sat Apr 8 13:06:18 1995 +++ xboing/patches/patch-aa Thu Jan 1 08:00:00 1970 @@ -1,78 +0,0 @@ -diff -rc /usr/ports/games/xboing/xboing/include/misc.h ./include/misc.h -*** /usr/ports/games/xboing/xboing/include/misc.h Wed Jan 4 17:14:48 1995 ---- ./include/misc.h Mon Apr 3 22:26:22 1995 -*************** -*** 87,93 **** - int ObtainWindowWidthHeight(Display *display, Window window, - int *width, int *height); - void sleepSync(Display *display, unsigned long ms); -! int usleep(unsigned long usec); - int ObtainMousePosition(Display *display, Window window, int *x, int *y); - int YesNoDialogue(Display *display, char *message); - Pixmap ScalePixmap(Display *display, Window window, Pixmap source, ---- 87,93 ---- - int ObtainWindowWidthHeight(Display *display, Window window, - int *width, int *height); - void sleepSync(Display *display, unsigned long ms); -! int Usleep(unsigned long usec); - int ObtainMousePosition(Display *display, Window window, int *x, int *y); - int YesNoDialogue(Display *display, char *message); - Pixmap ScalePixmap(Display *display, Window window, Pixmap source, -*************** -*** 100,106 **** - int YesNoDialogue(); - int ObtainMousePosition(); - void sleepSync(); -! int usleep(); - int ObtainWindowWidthHeight(); - int ResizeMainWindow(); - char *GetHomeDir(); ---- 100,106 ---- - int YesNoDialogue(); - int ObtainMousePosition(); - void sleepSync(); -! int Usleep(); - int ObtainWindowWidthHeight(); - int ResizeMainWindow(); - char *GetHomeDir(); -diff -rc /usr/ports/games/xboing/xboing/misc.c ./misc.c -*** /usr/ports/games/xboing/xboing/misc.c Wed Jan 4 17:13:33 1995 ---- ./misc.c Mon Apr 3 22:13:07 1995 -*************** -*** 79,87 **** - */ - - #if NeedFunctionPrototypes -! int usleep(unsigned long usec) - #else -! int usleep(usec) - unsigned long usec; - #endif - { ---- 79,87 ---- - */ - - #if NeedFunctionPrototypes -! int Usleep(unsigned long usec) - #else -! int Usleep(usec) - unsigned long usec; - #endif - { -*************** -*** 122,128 **** - ((et.tv_usec - st.tv_usec) / 1000) ); - - if ((ms) > ((1000 / 60) + SyncTime)) -! usleep(ms - SyncTime); - } - - #if NeedFunctionPrototypes ---- 122,128 ---- - ((et.tv_usec - st.tv_usec) / 1000) ); - - if ((ms) > ((1000 / 60) + SyncTime)) -! Usleep(ms - SyncTime); - } - - #if NeedFunctionPrototypes diff -ruN xboing.orig/patches/patch-ab xboing/patches/patch-ab --- xboing.orig/patches/patch-ab Mon Mar 6 16:13:36 1995 +++ xboing/patches/patch-ab Thu Nov 20 03:26:34 1997 @@ -1,7 +1,7 @@ -*** audio/LINUXaudio.c.orig Tue May 24 16:34:59 1994 ---- audio/LINUXaudio.c Sun Mar 5 23:43:14 1995 +*** audio/LINUXaudio.c.orig Thu Nov 20 03:04:17 1997 +--- audio/LINUXaudio.c Thu Nov 20 03:04:31 1997 *************** -*** 38,44 **** +*** 55,61 **** #include #include #include @@ -9,7 +9,7 @@ #include "include/error.h" #include "include/audio.h" ---- 38,44 ---- +--- 55,61 ---- #include #include #include diff -ruN xboing.orig/patches/patch-ac xboing/patches/patch-ac --- xboing.orig/patches/patch-ac Sat Apr 8 13:06:19 1995 +++ xboing/patches/patch-ac Thu Nov 20 03:29:16 1997 @@ -1,64 +1,43 @@ -*** Imakefile.orig Wed Jun 1 17:11:10 1994 ---- Imakefile Sun Mar 5 23:43:55 1995 -*************** -*** 5,24 **** - XCOMM This is the directory where the highscore, level & sound data will be - XCOMM placed. Default will be the current directory. - -! XBOING_DIR = . - - XCOMM These are some defines that must be set. Some may be overwritten in the - XCOMM machine arch section. - -! XPMLIB = -L../xpm-3.4c/lib -lXpm -! XPMINCLUDE = -I../xpm-3.4c/lib - XBOINGINCLUDE = -I./include - LEVEL_INSTALL_DIR = $(XBOING_DIR)/levels - SOUNDS_DIR = $(XBOING_DIR)/sounds - BACKUP_DIR = $(XBOING_DIR)/../backups - HIGH_SCORE_FILE = $(XBOING_DIR)/.xboing.scr -! AUDIO_AVAILABLE = False -! AUDIO_SRC = audio/NOaudio.c - AUDIO_INCLUDE = - AUDIO_LIB = - ---- 5,24 ---- - XCOMM This is the directory where the highscore, level & sound data will be - XCOMM placed. Default will be the current directory. - -! XBOING_DIR = /usr/X11R6/lib/X11/xboing - - XCOMM These are some defines that must be set. Some may be overwritten in the - XCOMM machine arch section. - -! XPMLIB = -lXpm -! XPMINCLUDE = -I/usr/X11R6/include/X11 - XBOINGINCLUDE = -I./include - LEVEL_INSTALL_DIR = $(XBOING_DIR)/levels - SOUNDS_DIR = $(XBOING_DIR)/sounds - BACKUP_DIR = $(XBOING_DIR)/../backups - HIGH_SCORE_FILE = $(XBOING_DIR)/.xboing.scr -! AUDIO_AVAILABLE = True -! AUDIO_SRC = audio/LINUXaudio.c - AUDIO_INCLUDE = - AUDIO_LIB = - -*************** -*** 98,105 **** - -DLEVEL_INSTALL_DIR=\"$(LEVEL_INSTALL_DIR)\" \ - -DAUDIO_AVAILABLE=\"$(AUDIO_AVAILABLE)\" \ - -DSOUNDS_DIR=\"$(SOUNDS_DIR)\" \ -! -DREADMEP_FILE=\"$(XBOING_DIR)/docs/problems.doc\" -! XCOMM -DUSE_FLOCK=\"True\" \ - XCOMM -DNO_LOCKING=\"True\" - - LOCAL_LIBRARIES = $(AUDIO_LIB) $(XPMLIB) $(XLIB) -lm ---- 98,105 ---- - -DLEVEL_INSTALL_DIR=\"$(LEVEL_INSTALL_DIR)\" \ - -DAUDIO_AVAILABLE=\"$(AUDIO_AVAILABLE)\" \ - -DSOUNDS_DIR=\"$(SOUNDS_DIR)\" \ -! -DREADMEP_FILE=\"$(XBOING_DIR)/docs/problems.doc\" \ -! -DUSE_FLOCK=\"True\" - XCOMM -DNO_LOCKING=\"True\" - - LOCAL_LIBRARIES = $(AUDIO_LIB) $(XPMLIB) $(XLIB) -lm +--- Imakefile.orig Fri Nov 22 09:28:46 1996 ++++ Imakefile Thu Nov 20 03:28:47 1997 +@@ -24,23 +24,23 @@ + XCOMM This is the directory where the highscore, level & sound data will be + XCOMM placed. Default will be the current directory. + +- XBOING_DIR = . ++ XBOING_DIR = ${X11BASE}/lib/X11/xboing + + XCOMM These are some defines that must be set. Some may be overwritten in the + XCOMM machine arch section. + +- XPMLIB = -L/usr/X11/lib -lXpm +- XPMINCLUDE = -I/usr/X11/include/X11 ++ XPMLIB = -lXpm ++ XPMINCLUDE = -I${X11BASE}/include/X11 + XBOINGINCLUDE = -I./include + LEVEL_INSTALL_DIR = $(XBOING_DIR)/levels + SOUNDS_DIR = $(XBOING_DIR)/sounds + BACKUP_DIR = $(XBOING_DIR)/../backups + HIGH_SCORE_FILE = $(XBOING_DIR)/.xboing.scr +- AUDIO_AVAILABLE = False +- AUDIO_SRC = audio/NOaudio.c ++ AUDIO_AVAILABLE = True ++ AUDIO_SRC = audio/LINUXaudio.c + AUDIO_INCLUDE = + AUDIO_LIB = +- CDEBUGFLAGS = -g ++ CDEBUGFLAGS = -O2 -m486 -pipe + + XCOMM Uncomment this if you want to use ANY of the AUDIO sound systems + #define COMPILE_IN_AUDIO +@@ -132,8 +132,8 @@ + -DLEVEL_INSTALL_DIR=\"$(LEVEL_INSTALL_DIR)\" \ + -DAUDIO_AVAILABLE=\"$(AUDIO_AVAILABLE)\" \ + -DSOUNDS_DIR=\"$(SOUNDS_DIR)\" \ +- -DREADMEP_FILE=\"$(XBOING_DIR)/docs/problems.doc\" +-XCOMM -DUSE_FLOCK=\"True\" \ ++ -DREADMEP_FILE=\"$(XBOING_DIR)/docs/problems.doc\" \ ++ -DUSE_FLOCK=\"True\" + XCOMM -DNEED_USLEEP=\"True\" \ + XCOMM -DNO_LOCKING=\"True\" + diff -ruN xboing.orig/patches/patch-ad xboing/patches/patch-ad --- xboing.orig/patches/patch-ad Sat Apr 8 13:06:20 1995 +++ xboing/patches/patch-ad Thu Nov 20 03:33:24 1997 @@ -1,134 +1,82 @@ -*** highscore.c.orig Wed Jan 4 17:13:31 1995 ---- highscore.c Fri Apr 7 00:13:54 1995 -*************** -*** 54,59 **** ---- 54,60 ---- - #include - #include - #include -+ #include - #include - #include - #include -*************** -*** 118,124 **** - static void InitialiseHighScores(void); - static void SortHighScores(void); - static void DeleteScore(int i); -! static int LockUnlock(int cmd); - #else - static int LockUnlock(); - static void DeleteScore(); ---- 119,125 ---- - static void InitialiseHighScores(void); - static void SortHighScores(void); - static void DeleteScore(int i); -! static int LockUnlock(int cmd, int fd); - #else - static int LockUnlock(); - static void DeleteScore(); -*************** -*** 839,845 **** - - /* Lock the file for me only */ - if (type == GLOBAL) -! id = LockUnlock(LOCK_FILE); - - /* Read in the lastest scores */ - if (ReadHighScoreTable(type) == False) ---- 840,846 ---- - - /* Lock the file for me only */ - if (type == GLOBAL) -! id = LockUnlock(LOCK_FILE, -1); - - /* Read in the lastest scores */ - if (ReadHighScoreTable(type) == False) -*************** -*** 869,875 **** - else - { - /* Don't add as score is smaller */ -! return False; - } - } - } /* for */ ---- 870,876 ---- - else - { - /* Don't add as score is smaller */ -! goto doUnlock; - } - } - } /* for */ -*************** -*** 891,906 **** - - /* Unlock the file now thanks */ - if (id != -1) -! id = LockUnlock(UNLOCK_FILE); - - /* Yes - it was placed in the highscore */ - return True; - } - } - - /* Unlock the file now thanks */ - if (id != -1) -! id = LockUnlock(UNLOCK_FILE); - - /* Not even a highscore - loser! */ - return False; ---- 892,908 ---- - - /* Unlock the file now thanks */ - if (id != -1) -! id = LockUnlock(UNLOCK_FILE, id); - - /* Yes - it was placed in the highscore */ - return True; - } - } - -+ doUnlock: - /* Unlock the file now thanks */ - if (id != -1) -! id = LockUnlock(UNLOCK_FILE, id); - - /* Not even a highscore - loser! */ - return False; -*************** -*** 1178,1187 **** - } - - #if NeedFunctionPrototypes -! static int LockUnlock(int cmd) - #else -! static int LockUnlock(cmd) -! int cmd; - #endif - { - static int inter = -1; ---- 1180,1189 ---- - } - - #if NeedFunctionPrototypes -! static int LockUnlock(int cmd, int fd) - #else -! static int LockUnlock(cmd, fd) -! int cmd, fd; - #endif - { - static int inter = -1; -*************** -*** 1218,1223 **** ---- 1220,1228 ---- - /* Open the highscore file for both read & write */ - if (cmd == LOCK_FILE) - inter = open(filename, O_CREAT | O_RDWR, 0666); -+ else -+ /* use old fd to unlock */ -+ inter = fd; - - #ifndef NO_LOCKING - +--- highscore.c.orig Thu Nov 20 03:07:35 1997 ++++ highscore.c Thu Nov 20 03:12:23 1997 +@@ -55,6 +55,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -119,7 +120,7 @@ + static void InitialiseHighScores(void); + static void SortHighScores(void); + static void DeleteScore(int i); +-static int LockUnlock(int cmd); ++static int LockUnlock(int cmd, int fd); + #else + static int LockUnlock(); + static void DeleteScore(); +@@ -844,7 +845,7 @@ + + /* Lock the file for me only */ + if (type == GLOBAL) +- id = LockUnlock(LOCK_FILE); ++ id = LockUnlock(LOCK_FILE, -1); + + /* Read in the lastest scores */ + if (ReadHighScoreTable(type) == False) +@@ -875,8 +876,8 @@ + { + /* Don't add as score is smaller */ + if (id != -1) +- id = LockUnlock(UNLOCK_FILE); +- return False; ++ id = LockUnlock(UNLOCK_FILE, id); ++ goto doUnlock; + } + } + } /* for */ +@@ -898,16 +899,17 @@ + + /* Unlock the file now thanks */ + if (id != -1) +- id = LockUnlock(UNLOCK_FILE); ++ id = LockUnlock(UNLOCK_FILE, id); + + /* Yes - it was placed in the highscore */ + return True; + } + } + ++doUnlock: + /* Unlock the file now thanks */ + if (id != -1) +- id = LockUnlock(UNLOCK_FILE); ++ id = LockUnlock(UNLOCK_FILE, id); + + /* Not even a highscore - loser! */ + return False; +@@ -1185,10 +1187,10 @@ + } + + #if NeedFunctionPrototypes +-static int LockUnlock(int cmd) ++static int LockUnlock(int cmd, int fd) + #else + static int LockUnlock(cmd) +- int cmd; ++ int cmd, fd; + #endif + { + static int inter = -1; +@@ -1225,6 +1227,9 @@ + /* Open the highscore file for both read & write */ + if (cmd == LOCK_FILE) + inter = open(filename, O_CREAT | O_RDWR, 0666); ++ else ++ /* use old fd to unlock */ ++ inter = fd; + + #ifndef NO_LOCKING + diff -ruN xboing.orig/patches/patch-ae xboing/patches/patch-ae --- xboing.orig/patches/patch-ae Thu Jan 1 08:00:00 1970 +++ xboing/patches/patch-ae Thu Nov 20 03:23:54 1997 @@ -0,0 +1,456 @@ +--- bonus.c.orig Thu Nov 20 03:12:56 1997 ++++ bonus.c Thu Nov 20 03:15:32 1997 +@@ -311,7 +311,7 @@ + XFlush(display); + + SetBonusWait(BONUS_SCORE, frame + 5); +- SetGameSpeed(SLOW_SPEED); ++ SetGameSpeed(MEDIUM_SPEED); + + DEBUG("set bonus mode to BONUS_SCORE.") + } +@@ -326,7 +326,7 @@ + { + DEBUG("in function DoScore() in bonus.c") + +- SetGameSpeed(SLOW_SPEED); ++ SetGameSpeed(MEDIUM_SPEED); + + /* Nice message rewarding you for your efforts */ + strcpy(string, "Congratulations on finishing this level."); +@@ -336,7 +336,7 @@ + + ypos += (35 + GAP); + SetBonusWait(BONUS_BONUS, frame + LINE_DELAY); +- SetGameSpeed(SLOW_SPEED); ++ SetGameSpeed(MEDIUM_SPEED); + DEBUG("set bonus mode to BONUS_BONUS.") + } + +@@ -387,7 +387,7 @@ + DrawShadowCentredText(display, window, textFont, + string, ypos, blue, TOTAL_WIDTH); + +- SetGameSpeed(SLOW_SPEED); ++ SetGameSpeed(MEDIUM_SPEED); + + /* Now skip to the next sequence */ + SetBonusWait(BONUS_LEVEL, frame + LINE_DELAY); +@@ -411,7 +411,7 @@ + bonusScore += ComputeScore(SUPER_BONUS_SCORE); + DisplayScore(display, scoreWindow, bonusScore); + +- SetGameSpeed(SLOW_SPEED); ++ SetGameSpeed(MEDIUM_SPEED); + + /* Now skip to the next sequence */ + SetBonusWait(BONUS_LEVEL, frame + LINE_DELAY); +@@ -454,7 +454,7 @@ + ypos += (int) (textFont->ascent + GAP * 1.5); + firstTime = True; + +- SetGameSpeed(SLOW_SPEED); ++ SetGameSpeed(MEDIUM_SPEED); + } + } + +@@ -468,7 +468,7 @@ + { + int secs, theLevel; + +- SetGameSpeed(SLOW_SPEED); ++ SetGameSpeed(MEDIUM_SPEED); + + /* Get the number of seconds left on the clock */ + secs = GetLevelTimeBonus(); +@@ -533,7 +533,7 @@ + /* Play the sound for the super bonus */ + if (noSound == False) playSoundFile("Doh3", 80); + +- SetGameSpeed(SLOW_SPEED); ++ SetGameSpeed(MEDIUM_SPEED); + + /* Get ready for the next sequence */ + SetBonusWait(BONUS_TIME, frame + LINE_DELAY); +@@ -569,7 +569,7 @@ + SetBonusWait(BONUS_TIME, frame + LINE_DELAY); + ypos += (textFont->ascent + GAP/2); + firstTime = True; +- SetGameSpeed(SLOW_SPEED); ++ SetGameSpeed(MEDIUM_SPEED); + } + } + +@@ -583,7 +583,7 @@ + { + int secs = 0; + +- SetGameSpeed(SLOW_SPEED); ++ SetGameSpeed(MEDIUM_SPEED); + + /* Get the number of seconds left on the clock */ + secs = GetLevelTimeBonus(); +@@ -627,7 +627,7 @@ + int myrank = 0; + char str[5]; + +- SetGameSpeed(SLOW_SPEED); ++ SetGameSpeed(MEDIUM_SPEED); + + /* Obtain current ranking for this score */ + myrank = GetHighScoreRanking(score); +@@ -680,7 +680,7 @@ + { + DEBUG("DoEndText in bonus screen.") + +- SetGameSpeed(SLOW_SPEED); ++ SetGameSpeed(MEDIUM_SPEED); + + /* Finishing sentence - so you know what level to do */ + sprintf(string, "Prepare for level %ld", level+1); +--- main.c.orig Thu Nov 20 03:15:34 1997 ++++ main.c Thu Nov 20 03:15:54 1997 +@@ -156,7 +156,7 @@ + + /* Set an entire game speedup or slowdown speed */ + temp = (speed / (long) userDelay); +- userDelay = delay; ++ userDelay = delay/2 + 3; + speed = (long) (temp * userDelay); + speedLevel = 10 - delay; + } +--- misc.c.orig Fri Nov 22 09:28:46 1996 ++++ misc.c Thu Nov 20 03:18:15 1997 +@@ -89,8 +89,8 @@ + #ifdef SYSV + #ifdef __clipper__ + struct timeval tv; +- tv.tv_sec=((usec)/1000); +- tv.tv_usec=(((usec)%1000)*1000); ++ tv.tv_sec=((usec)/1000000); ++ tv.tv_usec=((usec)%1000000); + select(1,NULL,NULL,NULL,&tv); + #else + poll((struct poll *) 0, (size_t) 0, usec / 1000); /* ms resolution */ +@@ -105,6 +105,68 @@ + #endif + + #if NeedFunctionPrototypes ++static int kudelay(unsigned long count) ++#else ++static int kudelay(count) ++unsigned long count; ++#endif ++{ ++ unsigned int bluff = 1; ++ ++ while( count-- != 0 ) /* this can hardly be "optimised out" */ ++ bluff = (bluff ^ ((bluff & 1) * 0x6110)) >> 1; ++ ++ return( bluff ); ++} ++ ++#if NeedFunctionPrototypes ++static void kusleep(unsigned long usec) ++#else ++static void kusleep(usec) ++ unsigned long usec; ++#endif ++{ ++ static float kuliber_time = 0.0; ++ static float kuliber_count = 0.0; ++ static unsigned long kutimerswap = (1000000 / 15); ++ struct timeval st, et; ++ long gap; ++ unsigned long count; ++ ++ if( kuliber_time == 0.0 ) ++ { ++ count = 0x1000; /* calibrate delay loop */ ++ gettimeofday(&st, NULL); ++ ++ while( True ) ++ { ++ kudelay( count ); ++ count = (count << 1); ++ gettimeofday(&et, NULL); ++ gap = (((et.tv_sec - st.tv_sec) * 1000000) + ++ (et.tv_usec - st.tv_usec) ); ++ ++ if( gap > 400*1000 ) ++ break; ++ } ++ ++ kuliber_time = (float)(gap/4); ++ kuliber_count = (float)(((count-1)&~0xFFF)>>2); ++ } ++ ++ if( usec > kutimerswap ) ++ { ++ kutimerswap = (1000000 / 30); ++ usleep( usec ); /* using usleep() for low resolution only */ ++ } ++ else ++ { ++ kutimerswap = (1000000 / 15); ++ kudelay( (unsigned long)(kuliber_count*((float)usec/kuliber_time)) ); ++ } ++} ++ ++#if NeedFunctionPrototypes + void sleepSync(Display *display, unsigned long ms) + #else + void sleepSync(display, ms) +@@ -112,27 +174,85 @@ + unsigned long ms; + #endif + { +- struct timeval st, et; +- long SyncTime; +- static unsigned long accu; ++ static long Expected_time = 0; ++ static long Ref_sec = 0; ++ static long Ref_usec = 0; ++ static long Sleeping_time = 0; ++ static int PLL_filter = 0; ++ struct timeval st; ++ long elapsed; ++ long dodelay; ++ float x; + +- gettimeofday(&st, NULL); + XSync(display, False); +- gettimeofday(&et, NULL); + +- SyncTime = (((et.tv_sec - st.tv_sec) * 1000) + +- ((et.tv_usec - st.tv_usec) / 1000) ); ++ gettimeofday(&st, NULL); ++ ++ if( Ref_sec == 0 ) ++ { ++ Ref_sec = st.tv_sec; /* take the initial reference point */ ++ Ref_usec = st.tv_usec; ++ Sleeping_time = ms * 1000; ++ } ++ ++ elapsed = (st.tv_sec - Ref_sec) * 1000000 + (st.tv_usec - Ref_usec); ++ dodelay = Sleeping_time; ++ ++ if( PLL_filter > 0 && elapsed != 0 ) /* Phase lock loop */ ++ { ++ dodelay = Expected_time + Sleeping_time - elapsed; ++ ++ if( dodelay < 0 ) ++ { ++ dodelay = 0; PLL_filter--; ++ } ++ else ++ if( dodelay > 2*Sleeping_time ) ++ { ++ dodelay = 2*Sleeping_time; PLL_filter--; ++ } ++ else ++ PLL_filter = 3; ++ ++ if( elapsed > 40*Sleeping_time && Expected_time > 40*Sleeping_time ) ++ { ++ elapsed -= 20*Sleeping_time; /* Ref. point shouldn't be far away*/ ++ Expected_time -= 20*Sleeping_time; ++ Ref_usec += 20*Sleeping_time; ++ Ref_sec += Ref_usec/1000000; Ref_usec %= 1000000; ++ } ++ } + +-/* if ((ms) > ((1000 / 60) + SyncTime)) +- usleep(ms - SyncTime); +-*/ +- if ((ms + accu) > ((1000 / 30) + SyncTime)) ++ if( PLL_filter <= 0 && elapsed > 40000 ) /* Frequency lock loop */ + { +- usleep(ms +accu - SyncTime); +- accu = 0; ++ /* feedback filter */ ++ x = 0.5 + 0.5 * (float)Expected_time / (float)elapsed; ++ ++ if( x < 0.966 ) /* Acceleration must be strongly limited */ ++ x = 0.966; ++ ++ if( x > 2.0 ) ++ x = 2.0; ++ ++ Sleeping_time = (long)((float)Sleeping_time * x); ++ ++ if( Sleeping_time < 500 ) ++ Sleeping_time = 500; ++ ++ if( x > 0.99 && x < 1.01 && Sleeping_time > ms*500 ) ++ PLL_filter = -1 - 4*PLL_filter; /* locked - it's time to try PLL */ ++ else ++ PLL_filter = 0; ++ ++ Ref_sec = st.tv_sec; ++ Ref_usec = st.tv_usec; ++ Expected_time = 0; ++ dodelay = Sleeping_time; + } +- else if (ms > SyncTime) +- accu += (ms - SyncTime); ++ ++ kusleep( dodelay ); ++ ++ Expected_time += ms * 1000; + } + + #if NeedFunctionPrototypes +--- presents.c.orig Thu Nov 20 03:18:42 1997 ++++ presents.c Thu Nov 20 03:21:38 1997 +@@ -287,7 +287,7 @@ + } + #endif + +- SetPresentWait(PRESENT_TEXT1, frame + 800); ++ SetPresentWait(PRESENT_TEXT1, frame + 200); + } + + #if NeedFunctionPrototypes +@@ -309,7 +309,7 @@ + RenderShape(display, window, justin, justinM, + x, y, 285, 44, True); + +- SetPresentWait(PRESENT_TEXT2, frame + 300); ++ SetPresentWait(PRESENT_TEXT2, frame + 100); + } + + #if NeedFunctionPrototypes +@@ -331,7 +331,7 @@ + RenderShape(display, window, kibell, kibellM, + x, y, 260, 40, True); + +- SetPresentWait(PRESENT_TEXT3, frame + 500); ++ SetPresentWait(PRESENT_TEXT3, frame + 200); + } + + #if NeedFunctionPrototypes +@@ -355,7 +355,7 @@ + RenderShape(display, window, presents, presentsM, + x, y, 410, 44, True); + +- SetPresentWait(PRESENT_TEXT_CLEAR, frame + 750); ++ SetPresentWait(PRESENT_TEXT_CLEAR, frame + 250); + } + + #if NeedFunctionPrototypes +@@ -375,7 +375,7 @@ + + FadeAwayArea(display, window, x, y, 410, 44); + +- SetPresentWait(PRESENT_LETTERS, frame + 10); ++ SetPresentWait(PRESENT_LETTERS, frame + 5); + } + + /* The distances for the gap inbetwen blocks */ +@@ -404,7 +404,7 @@ + DrawLetter(display, window, i, x, y); + x += 10 + dists[i]; + +- SetPresentWait(PRESENT_LETTERS, frame + 300); ++ SetPresentWait(PRESENT_LETTERS, frame + 100); + } + else + { +@@ -416,7 +416,7 @@ + x += dists[3]; + DrawLetter(display, window, 3, x, y); + +- SetPresentWait(PRESENT_SHINE, frame + 200); ++ SetPresentWait(PRESENT_SHINE, frame + 100); + } + + i++; +@@ -463,7 +463,7 @@ + if (in == 11) + { + XCopyArea(display, store, window, gc, 0, 0, 20, 20, x, y); +- SetPresentWait(PRESENT_SPECIAL_TEXT1, frame + 500); ++ SetPresentWait(PRESENT_SPECIAL_TEXT1, frame + 100); + } + } + } +@@ -499,7 +499,7 @@ + len = strlen(wisdom); + x = ((PLAY_WIDTH + MAIN_WIDTH) / 2) - + (XTextWidth(dataFont, wisdom, len) / 2); +- nextFrame = frame + 10; ++ nextFrame = frame + 5; + first = False; + } + +@@ -508,11 +508,11 @@ + if (noSound == False) playSoundFile("key", 60); + DrawText(display, window, x, y, dataFont, red, wisdom, i); + +- nextFrame = frame + 30; ++ nextFrame = frame + 15; + + i++; + if (i > len) +- SetPresentWait(PRESENT_SPECIAL_TEXT2, frame + 700); ++ SetPresentWait(PRESENT_SPECIAL_TEXT2, frame + 150); + } + } + +@@ -542,7 +542,7 @@ + len = strlen(wisdom2); + x = ((PLAY_WIDTH + MAIN_WIDTH) / 2) - + (XTextWidth(dataFont, wisdom2, len) / 2); +- nextFrame = frame + 10; ++ nextFrame = frame + 5; + first = False; + } + +@@ -551,11 +551,11 @@ + if (noSound == False) playSoundFile("key", 60); + DrawText(display, window, x, y, dataFont, red, wisdom2, i); + +- nextFrame = frame + 30; ++ nextFrame = frame + 15; + + i++; + if (i > len) +- SetPresentWait(PRESENT_SPECIAL_TEXT3, frame + 700); ++ SetPresentWait(PRESENT_SPECIAL_TEXT3, frame + 150); + } + } + +@@ -584,7 +584,7 @@ + len = strlen(wisdom3); + x = ((PLAY_WIDTH + MAIN_WIDTH) / 2) - + (XTextWidth(dataFont, wisdom3, len) / 2); +- nextFrame = frame + 10; ++ nextFrame = frame + 5; + first = False; + } + +@@ -593,11 +593,11 @@ + if (noSound == False) playSoundFile("key", 60); + DrawText(display, window, x, y, dataFont, red, wisdom3, i); + +- nextFrame = frame + 30; ++ nextFrame = frame + 15; + + i++; + if (i > len) +- SetPresentWait(PRESENT_CLEAR, frame + 800); ++ SetPresentWait(PRESENT_CLEAR, frame + 200); + } + } + +@@ -642,7 +642,7 @@ + yb -= 10; + + if (yt > ((PLAY_HEIGHT + MAIN_HEIGHT) / 2)) +- SetPresentWait(PRESENT_FINISH, frame + 20); ++ SetPresentWait(PRESENT_FINISH, frame + 10); + + nextFrame = frame + 20; + } diff -ruN xboing.orig/pkg/PLIST xboing/pkg/PLIST --- xboing.orig/pkg/PLIST Mon Nov 18 21:58:59 1996 +++ xboing/pkg/PLIST Thu Nov 20 03:34:57 1997 @@ -67,6 +67,21 @@ lib/X11/xboing/levels/level63.data lib/X11/xboing/levels/level64.data lib/X11/xboing/levels/level65.data +lib/X11/xboing/levels/level66.data +lib/X11/xboing/levels/level67.data +lib/X11/xboing/levels/level68.data +lib/X11/xboing/levels/level69.data +lib/X11/xboing/levels/level70.data +lib/X11/xboing/levels/level71.data +lib/X11/xboing/levels/level72.data +lib/X11/xboing/levels/level73.data +lib/X11/xboing/levels/level74.data +lib/X11/xboing/levels/level75.data +lib/X11/xboing/levels/level76.data +lib/X11/xboing/levels/level77.data +lib/X11/xboing/levels/level78.data +lib/X11/xboing/levels/level79.data +lib/X11/xboing/levels/level80.data lib/X11/xboing/levels/new.data lib/X11/xboing/sounds/Doh1.au lib/X11/xboing/sounds/Doh2.au >Audit-Trail: >Unformatted: