Hi,
On Wed, Jun 24, 2020, at 10:57 AM, Tom Murphy wrote:
> Hi,
>
> Running q2ded in a tty/tmux window, and then if that tty disappears,
> q2ded begins spinning the CPU taking up sometimes 97% of the CPU.
> The process is constantly polling for input, but if the tty is
> marked 'bad' in fstat, the program can't cope.
>
> Setting 'busywait' variable to 1 allows q2ded to use nanosleep and
> stop spinning the cpu.
>
Great find.
> I've improved the rc script to include the busywait variable and
> also removed the cd into the shared yquake2 directory since setting
> +set basedir to that path does the same thing and is cleaner.
>
> I've used the following flags for testing:
>
> q2ded_flags="+set dedicated 1 +set game holywars +exec server.cfg"
>
> It might be worth also hard coding +set dedicated 1 as well in the
> rc script? What do you think?
>
I think it makes sense for the rc.d script. If someone wants to run it in the
foreground
he/she can cd to the game directory manually and execute the binary directly.
That
is the reason we documented in the commit msg for not providing a q2ded wrapper
like we do for the game executable itself.
One additional comment inline the diff.
> Diff is attached.
>
> Thanks,
> Tom
>
>
> Index: Makefile
> ===================================================================
> RCS file: /cvs/ports/games/yquake2/Makefile,v
> retrieving revision 1.21
> diff -u -p -r1.21 Makefile
> --- Makefile 25 Mar 2020 21:22:59 -0000 1.21
> +++ Makefile 24 Jun 2020 08:49:24 -0000
> @@ -8,7 +8,7 @@ V= 7.43
> PKGNAME= ${N}-${V}
> DISTNAME= quake2-${V}
> CATEGORIES= games
> -REVISION= 0
> +REVISION= 1
>
> HOMEPAGE= https://www.yamagi.org/quake2/
> MAINTAINER= Adam Wolk <[email protected]>
> Index: pkg/q2ded.rc
> ===================================================================
> RCS file: /cvs/ports/games/yquake2/pkg/q2ded.rc,v
> retrieving revision 1.5
> diff -u -p -r1.5 q2ded.rc
> --- pkg/q2ded.rc 11 Jan 2018 19:27:02 -0000 1.5
> +++ pkg/q2ded.rc 24 Jun 2020 08:49:24 -0000
> @@ -12,7 +12,7 @@ rc_bg=YES
> rc_reload=NO
>
> rc_start() {
> - ${rcexec} "cd ${TRUEPREFIX}/share/yquake2; ${daemon} ${daemon_flags}"
> + ${rcexec} "${daemon} +set gamedir ${TRUEPREFIX}/share/yquake2 +set
> busywait 0 ${daemon_flags}"
I think I don't like having this explicitly added to the command here. That way
no one
can override those flags even for testing. I think a cleaner solution would be
to define
daemon_flags and have those as default like we do for ie. postgresql. That way
people
who want to override them just define their own in rc.conf.local and I think
it's reasonable
to expect them to understand why they should copy the existing ones. I think
this
would also allow us to remove the whole rc_start definition.
> }
>
> rc_cmd $1
>
>