[mythtv] OS X 10.3 and MythTV 0.20

Piers Kittel mythtv at biased.org
Thu Nov 9 15:01:34 UTC 2006


Nigel,

Any update on this?  Is there anything I can do in the interm?  It's 
getting really annoying not being able to use my main TV with MythTV :) 
  You mention that you can't find the fault with some 10.3 constructed 
packages - where do I obtain them, as I can't compile MythTV?

Thank you very much for your help again.

Regards - Piers

Nigel Pearson wrote:
> The good news:
> 1) I have been able to reproduce the problem,
> with both David Snider's packages, and my own
> 10.4/Xcode2.4 builds, and
> 2) I have a hacky workaround
> 
> The bad news:
> 1) I won't be committing this hack any time soon
> (because it is not the right way to fix it), and
> 2) I have _not_ been able to reproduce the fault
> with 10.3 constructed packages
> (which Tony reported)
> 
> 
> ...
>> It looks like the event being passed through
>> the methods is invalid (possibly null)
> 
> Yep. All events are NULL.
> 
>> so the dynamic cast at mythmainwindow.cpp line 1096 fails.
> 
> Spot-on, Andrew!
> (wish I had read this _before_ I spent a few
>   hours tracing, patching and rebuilding :-)
> 
> It seems related to compiler RTTI stuff.
> See this really old discussion:
> http://www.gossamer-threads.com/lists/mythtv/dev/72747
> 
> What I don't understand is why it is failing in
> the older runtime environment. Still tracing,
> but any casting should be in the generated code.
> Not in libC.
> 
> Anyway, here is a workaround:
> 
> % svn diff
> Index: mythmainwindow.cpp
> ===================================================================
> --- mythmainwindow.cpp  (revision 11680)
> +++ mythmainwindow.cpp  (working copy)
> @@ -1081,9 +1081,14 @@
>       {
>           case QEvent::KeyPress:
>           {
> +            QKeyEvent *ke = dynamic_cast<QKeyEvent*>(e);
> +
> +            /* Weird Mac OS X bug? */
> +            if (!ke)
> +                ke = (QKeyEvent *)e;
> +
>               if (currentWidget())
>               {
> -                QKeyEvent *ke = dynamic_cast<QKeyEvent*>(e);
>                   ke->accept();
>                   QWidget *current = currentWidget();
>                   if (current && current->isEnabled())
> @@ -1100,7 +1105,7 @@
>                   MythScreenType *top = (*it)->GetTopScreen();
>                   if (top)
>                   {
> -                    if (top->keyPressEvent(dynamic_cast<QKeyEvent*> 
> (e)))
> +                    if (top->keyPressEvent(ke))
>                           return true;
>                   }
>               }
> %
> 
> --
> Nigel Pearson, nigel at ind.tansu.com.au| I've been talking to
> Telstra Net. Eng., Sydney, Australia | the ship's computer.
> Office: 9202 3900    Fax:  9261 3912 | ... It hates me!
> Mobile: 0408 664435  Home: 9792 6998 |       Marvin
> _______________________________________________
> mythtv-dev mailing list
> mythtv-dev at mythtv.org
> http://mythtv.org/cgi-bin/mailman/listinfo/mythtv-dev


More information about the mythtv-dev mailing list