[mythtv-commits] mythtv commit: r25977 by beirdo

mythtv at cvs.mythtv.org mythtv at cvs.mythtv.org
Sun Aug 29 23:59:23 UTC 2010


      Author: beirdo
        Date: 2010-08-29 23:59:23 +0000 (Sun, 29 Aug 2010)
New Revision: 25977
   Changeset: http://svn.mythtv.org/trac/changeset/25977

Log:

Changed myth_system to use a reaper thread.  This takes care of the possibility
of several concurrent children exiting at the same time.  

The MythSystemReaper thread is started the first time is is to be used, and
uses a QMap of PID -> { mutex, return value } to match up the dying child 
(from waitpid(-1, &status, WNOHANG)) to the appropriate mutex which is blocking
the calling thread.  There is a 100ms timeout between calls to waitpid, causing
the blocking to be in the timeout, not in waitpid() itself as an old workaround
indicated that OSX has potential issues with blocking in waitpid.

Also, in the child process, after the fork, clear the verbose mutex if it is 
locked, as this will cause the child process to freeze should it try to use
VERBOSE.


This *should* fix the bug where starting a recording gets stuck at "Please 
Wait..." waiting for the pulseaudio disabling to return.  myth_system() is
now thread-safe.



Modified:

   trunk/mythtv/libs/libmythdb/mythsystem.cpp




More information about the mythtv-commits mailing list