[mythtv-commits] Re: Ticket #262: Exiting LiveTV not possible from an off-air channel at startup

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

#262: Exiting LiveTV not possible from an off-air channel at startup
 Reporter:  danielk  |        Owner:  danielk
     Type:  defect   |       Status:  closed 
 Priority:  major    |    Milestone:  0.19   
Component:  mythtv   |      Version:  head   
 Severity:  medium   |   Resolution:  fixed  
       Cc:           |  
Changes (by danielk):

  * resolution:  => fixed
  * status:  assigned => closed


 (In [7177]) 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.)

Ticket URL: <http://cvs.mythtv.org/trac/ticket/262>
MythTV <http://www.mythtv.org/>

More information about the mythtv-commits mailing list