diff options
author | edwin <edwin@FreeBSD.org> | 2004-12-23 14:27:14 +0800 |
---|---|---|
committer | edwin <edwin@FreeBSD.org> | 2004-12-23 14:27:14 +0800 |
commit | 1c28a9e62ba37233010d5897a51d42205cde0032 (patch) | |
tree | 5841090a6456e2db00749cbc524c5eb9fea544e3 | |
parent | f81d2a24ce886ac0aac1661d96786fc695991ead (diff) | |
download | freebsd-ports-gnome-1c28a9e62ba37233010d5897a51d42205cde0032.tar.gz freebsd-ports-gnome-1c28a9e62ba37233010d5897a51d42205cde0032.tar.zst freebsd-ports-gnome-1c28a9e62ba37233010d5897a51d42205cde0032.zip |
games/bastet does busy waiting
bastet does busy waiting because the select() call in game.c returns
with EINVAL. The reason is that timeout does not point to the struct
timeval in the program but to a ncurses function with the same name. I
renamed the variable to fix it. Also the value 1000000 is not a valid
timeout value because it would have to be encoded as 1 second and 0
microseconds. I fixed it trivially by using 999999 for that value.
Also I fixed a gcc warning. Anyway I think the function bast_clear has
to be declared somewhere else.
Should be easy to fix - temporarily I just put the diff below in my
files/ directory of the port.
PR: ports/75208
Submitted by: Rudolf Polzer <freebsd-dr@durchnull.de>
-rw-r--r-- | games/bastet/Makefile | 1 | ||||
-rw-r--r-- | games/bastet/files/patch-game.c | 67 |
2 files changed, 68 insertions, 0 deletions
diff --git a/games/bastet/Makefile b/games/bastet/Makefile index c3de0ee62f27..6e11d18f7b81 100644 --- a/games/bastet/Makefile +++ b/games/bastet/Makefile @@ -7,6 +7,7 @@ PORTNAME= bastet PORTVERSION= 0.41 +PORTREVISION= 1 CATEGORIES= games MASTER_SITES= http://fph.altervista.org/prog/ EXTRACT_SUFX= .tgz diff --git a/games/bastet/files/patch-game.c b/games/bastet/files/patch-game.c new file mode 100644 index 000000000000..b93093af52af --- /dev/null +++ b/games/bastet/files/patch-game.c @@ -0,0 +1,67 @@ +diff -ru game.c bastet-0.41/game.c +--- game.c Sat Dec 18 00:28:00 2004 ++++ bastet-0.41/game.c Sat Dec 18 00:56:26 2004 +@@ -12,6 +12,9 @@ + #include "game.h" + #include "main.h" + #include "bast.h" ++#include <sys/select.h> ++ ++void bast_clear(); + + const DOT block_data[BLOCK_TYPES][BLOCK_ORIENTS][BLOCK_DOTS] = + { +@@ -66,7 +70,7 @@ + + /* Delay before block drop one step down (usec). + We start at one sec. and then decreases the delay by 23% at each level. */ +-const int delay[NO_LEVELS] = {1000000, 770000, 593000, 457000, 352000, 271000, 208000, 160000, 124000, 95000}; ++const int delay[NO_LEVELS] = {999999, 770000, 593000, 457000, 352000, 271000, 208000, 160000, 124000, 95000}; + + /* Window in which the action takes place. */ + WINDOW *well_win; +@@ -278,6 +282,7 @@ + refresh(); + } + ++struct timeval mytimeout; + /* Drop a block in the well. When done return y-cord. of where block + ended. If it's not possible to even start with a new block return -1. */ + int drop_block(int type, int level) +@@ -288,14 +293,13 @@ + int orient = 0; + int ch; + fd_set inputs, test_fds; +- struct timeval timeout; + int sel_ret; + + if (0 == check_block_pos(y, x, type, orient)) + return -1; /* Oh no, game over. */ + +- timeout.tv_sec = 0; +- timeout.tv_usec = delay[level]; ++ mytimeout.tv_sec = 0; ++ mytimeout.tv_usec = delay[level]; + + FD_ZERO(&inputs); + FD_SET(0, &inputs); +@@ -308,7 +312,7 @@ + while(1) { + test_fds = inputs; + +- sel_ret = select(FD_SETSIZE, &test_fds, (fd_set *) 0, (fd_set *) 0, &timeout); ++ sel_ret = select(FD_SETSIZE, &test_fds, (fd_set *) 0, (fd_set *) 0, &mytimeout); + + ch = getch(); + +@@ -391,8 +402,8 @@ + set_block(y, x, type, orient); + return y; + } +- timeout.tv_sec = 0; +- timeout.tv_usec = delay[level]; ++ mytimeout.tv_sec = 0; ++ mytimeout.tv_usec = delay[level]; + } + } + } |