[mythtv] Trying to debug seek problems
Isaac Richards
ijr at case.edu
Sun Jan 29 08:30:13 UTC 2006
On Saturday 28 January 2006 22:11, David Abrahams wrote:
> Isaac Richards <ijr at case.edu> writes:
> > On Saturday 28 January 2006 20:28, David Abrahams wrote:
> >> It's pretty common, when I hit the 'E' key while watching a recording,
> >> for the indicator to end up at zero. Likewise it's common for me to
> >> end up back at the beginning of all video when I use the skip
> >> forward/reverse keys.
> >
> > <snip>
> >
> >> As I said, this bug is apparently repeated through most of the
> >> subclasses of VideoOutput, the exceptions being VideoOutputIvtv and
> >> VideoOutputXv. I suppose most people are using Xv and that's why it
> >> hasn't been more widely reported. Regardless, the repetition of this
> >> code pattern strongly suggests that some refactoring is in order.
> >
> > No. VideoOutputXv has the same "bug",
>
> Well, it depends. When VideoOutputSubType() > XVideo it calls
> PrepareFrameXvMC, where this->framesPlayed is never updated if buffer
> turns out to be NULL. So, is that the way it's supposed to be?
Yes. XvMC pauses differently than Xv does.
> > but that's how the code is supposed to
> > be. VideoOutputIvtv doesn't even have analogous code.
> >
> > The problem is that VideoOutputQuartz::UpdatePauseFrame() isn't updating
> > the scratch frame's frame number like it should, since it's using that
> > style of pausing.
>
> Okay, so how should it update the scratch frame's frame number? And
> why, if it's supposed to work that way, is it apparently perfect with
> my change? What is broken that I'm not seeing?
Check how it's done in VideoOutputXv::UpdatePauseFrame. Obviously, it works
there. Simple grepping would have found that.
> > This obviously is not a case for refactoring, since each output
> > class can and does (XvMC and ivtv) need to handle this differently.
>
> It's not obvious at all.
>
> <soapbox>
> Any time there's code repetition it's a case for refactoring. If
> there's a "style of pausing" that's used by multiple VideoOutput
> subclasses, and it requires updating the scratch frame's frame number
> in some particular way, it should have been factored out. Had that
> been done properly, this bug would never have appeared in the Mac
> frontend without biting everyone else, too. So it would have been
> noticed and fixed immediately. And of course, that's the
> whole point of refactoring to eliminate code duplication.
> </soapbox>
No. We're talking about a single line of code duplication in a couple of
child classes but not others, and which is dependant on the manner of
operation in another of the sibling classes.
Do you really think that a few hundred lines of email are necessary for a one
line change for a simple bug? Seems rather silly to me. Make a tiny little
patch, create a ticket in trac, attach it. Much easier.
Isaac
More information about the mythtv-dev
mailing list