[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