[mythtv-commits] Ticket #7603: mythfrontend can never connect to just waked up master backend
MythTV
mythtv at cvs.mythtv.org
Fri Dec 18 14:28:24 UTC 2009
#7603: mythfrontend can never connect to just waked up master backend
-------------------------------------+--------------------------------------
Reporter: bam <mybigspam@…> | Owner: danielk
Type: defect | Status: assigned
Priority: minor | Milestone: unknown
Component: MythTV - General | Version: unknown
Severity: medium | Mlocked: 0
-------------------------------------+--------------------------------------
Changes (by danielk):
* owner: ijr => danielk
* status: new => assigned
Comment:
The problem is a little more complicated than just this problem. When this
code was first ported to MythUI another thread should have been created
since MythUI depends on the UI thread continuing to run while the
reconnect is in progress. But reconnects are initiated by MythProto
activity which is often initiated by MythProto calls in the UI thread.
One solution is to have two code paths within the reconnect code, one for
when it is called from within the UI and another for when it is called
from another thread. Another solution is do reconnects in a dedicated
thread and when a MythProto call is called while disconnected we wait
while allowing the UI to update. A third solution is to use the new thread
pool facilities within Qt4 instead of adding another dedicated thread and
treating GetSetting() calls like we would with a dedicated thread.
Finally, a fourth solution is to not allow MythProto calls in the
UI thread; this one allows for the most elegant and least error prone code
and the best UI responsiveness, but would require the greatest number of
changes to the existing code.
All of these solutions are more complicated than I would like and there is
a danger in allowing the UI to update while we are reconnecting since the
user may initiate some action which results in more blocking calls or
tries to use uninitialized data. My first preference is to use the
threadpool, but there is an additional danger there that the threadpool
may already be full of qRunnables which make MythProto calls.
I'm not promising to work on this myself anytime soon, mostly due to lack
of time. But I will assign it to myself as I've thought about these
issues. When I last worked on the reconnect code my primary goal was to
get slave backends to function correctly again, frontends can always be
restarted in the worst case scenario -- you don't lose any recordings
while it's dithering.
Please post any follow-on discussion in the mythtv-dev mailing list. I
read all those messages even if I don't have time to reply right away.
--
Ticket URL: <http://svn.mythtv.org/trac/ticket/7603#comment:4>
MythTV <http://www.mythtv.org/>
MythTV
More information about the mythtv-commits
mailing list