[mythtv] [patch] Backtrace for SEGV while editing recording
Neale Swinnerton
mythtv-dev.spam at isismanor.com
Sat Jun 4 15:34:00 UTC 2005
Yeah, this is working for me..... I found a recording that caused the
backtrace I've posted before, applied the patch and hey presto, no
backtrace!
FYI: I am using this with my afd patch.
thanks
Neale
Stuart Auchterlonie wrote:
> On Thu, Apr 28, 2005 at 09:24:51PM +0100, Mark Seagrief wrote:
>
>>Hi,
>>
>>I've been seeing this same problem for a while now. The backtrace from GDB
>>looks identical to Neale's. I sprinkled a lot of printf statements into the
>>code and the problem appears to be occurring with the m_displaypos.y being
>>wrong (as above), the value of m_displaypos.y only goes incorrect (that I've
>>observed), under the following conditions:
>>
>>* Editing a clip that has both 16:9 and 4:3 content
>>* Already have edit markers visible on the screen
>>* Navigate from a 16:9 to 4:3 section of the video clip or from a 16:9 to a
>>4:3 section
>>
>>Navigating between 16:9 and 4:3 sections without any edit markers in place
>>is fine and doesn't cause a crash.
>>
>
>
> I've been having a look into this and believe I've found the problem.
>
> Valgrind pointed me in the right direction, namely that in
>
> void OSDTypeImage::Reinit(float wmult, float hmult)
> {
> int x = (int)(m_displaypos.x() * wmult / m_wmult);
> int y = (int)(m_displaypos.y() * hmult / m_hmult);
> ....
> (osdtypes.cpp)
>
>
> Both m_wmult & m_hmult were being used without being initialized.
>
> I've attached a patch to fix the problem.
>
> Could everyone give it a go and see if it works for them....
>
>
> Thanks,
> Stuart
>
>
>
> ------------------------------------------------------------------------
>
> Index: libs/libmythtv/osdtypes.cpp
> ===================================================================
> --- libs/libmythtv/osdtypes.cpp (revision 36)
> +++ libs/libmythtv/osdtypes.cpp (working copy)
> @@ -195,7 +195,7 @@
> }
> else if (OSDTypeImage *item = dynamic_cast<OSDTypeImage*>(type))
> {
> - item->Reinit(wmult, hmult);
> + item->Reinit(wchange, hchange, wmult, hmult);
> }
> else if (OSDTypeBox *item = dynamic_cast<OSDTypeBox*>(type))
> {
> @@ -796,10 +796,10 @@
> m_name = name;
> }
>
> -void OSDTypeImage::Reinit(float wmult, float hmult)
> +void OSDTypeImage::Reinit(float wchange, float hchange, float wmult, float hmult)
> {
> - int x = (int)(m_displaypos.x() * wmult / m_wmult);
> - int y = (int)(m_displaypos.y() * hmult / m_hmult);
> + int x = (int)(m_displaypos.x() * wchange);
> + int y = (int)(m_displaypos.y() * hchange);
>
> m_displaypos.setX(x);
> m_displaypos.setY(y);
> @@ -1080,7 +1080,7 @@
>
> m_displayrect = QRect(x, y, width, height);
>
> - OSDTypeImage::Reinit(wmult, hmult);
> + OSDTypeImage::Reinit(wchange, hchange, wmult, hmult);
> }
>
> void OSDTypePosSlider::SetPosition(int pos)
> @@ -1129,7 +1129,7 @@
>
> m_displayrect = QRect(x, y, width, height);
>
> - OSDTypeImage::Reinit(wmult, hmult);
> + OSDTypeImage::Reinit(wchange, hchange, wmult, hmult);
> }
>
> void OSDTypeFillSlider::SetPosition(int pos)
> @@ -1654,7 +1654,7 @@
> void OSDTypePositionImage::Reinit(float wchange, float hchange, float wmult,
> float hmult)
> {
> - OSDTypeImage::Reinit(wmult, hmult);
> + OSDTypeImage::Reinit(wchange, hchange, wmult, hmult);
>
> for (int i = 0; i < m_numpositions; i++)
> {
> Index: libs/libmythtv/osdtypes.h
> ===================================================================
> --- libs/libmythtv/osdtypes.h (revision 36)
> +++ libs/libmythtv/osdtypes.h (working copy)
> @@ -226,7 +226,7 @@
> virtual ~OSDTypeImage();
>
> void SetName(const QString &name);
> - void Reinit(float wmult, float hmult);
> + void Reinit(float wchange, float hchange, float wmult, float hmult);
>
> void LoadImage(const QString &filename, float wmult, float hmult,
> int scalew = -1, int scaleh = -1);
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> 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