[mythtv-commits] mythtv commit: r7177 by danielk

mythtv at cvs.mythtv.org mythtv at cvs.mythtv.org
Tue Aug 30 01:37:15 UTC 2005


      Author: danielk
        Date: 2005-08-30 01:37:14 +0000 (Tue, 30 Aug 2005)
New Revision: 7177
   Changeset: http://cvs.mythtv.org/trac/changeset/7177

Modified:

   trunk/mythtv/libs/libmythtv/tv_play.cpp
   trunk/mythtv/libs/libmythtv/tv_play.h
   trunk/mythtv/libs/libmythtv/tv_rec.cpp

Log:

Fixes #262.

There were essentially two problems. One was that hitting
ESC while the signal OSD was on screen just exited the OSD,
not the player. Then the OSD reappeared once there was a 
new signal message. This is why it appeared to be quiting
but then it didn't quit.

The second problem was that AbortStartRecorderThread() was
called after "QMutexLocker lock(&stateChangeLock)" in 
HandleStateChange(), this meant that if you hit ESC twice
you still didn't exit because the StartRecorderPost() 
needed access to lock the stateChangeLock before it exited.
Since HandleStateChange() wouldn't release the lock until
StartRecorderPost() exited, we had a classic deadlock.

I also fixed two other somewhat related problems:
 1/ HandleStateChange did not reset the changeState to
    false after a Null transition. This created a great
    deal of chatter until you issued next changedStates.
 2/ We did not grab the TV::osdlock before deleting the
    nvp. This presents a problem if we try check GetOSD()
    for null and then use after the nvp is deleted...
    (This is still a problem with anyone using GetOSD()
    outside the TV event loop, without grabbing a
    TV::osdlock. The UDPNotify class comes to mind.)






More information about the mythtv-commits mailing list