diff -u -r -x .svn ./a/mythtv/libs/libmythtv/videoout_xv.cpp ./b/mythtv/libs/libmythtv/videoout_xv.cpp --- ./a/mythtv/libs/libmythtv/videoout_xv.cpp 2007-05-27 13:05:40.000000000 +0200 +++ ./b/mythtv/libs/libmythtv/videoout_xv.cpp 2007-05-27 13:44:28.000000000 +0200 @@ -278,6 +278,8 @@ int VideoOutputXv::GetRefreshRate(void) { + double rate; + if (!XJ_started) return -1; @@ -294,8 +296,12 @@ return -1; } - double rate = (double)((double)(dot_clock * 1000.0) / - (double)(mode_line.htotal * mode_line.vtotal)); + // See if there's valid data to prevent a divide by zero. + if (mode_line.htotal * mode_line.vtotal > 0) + rate = (double)((double)(dot_clock * 1000.0) / + (double)(mode_line.htotal * mode_line.vtotal)); + else + rate = 60.09; // or zero... // Assume 60Hz if we can't otherwise determine it. if (rate == 0) @@ -308,6 +314,8 @@ rate = 60; } + VERBOSE(VB_PLAYBACK, LOC + QString("Refresh rate set to %1Hz ").arg(rate)); + rate = 1000000.0 / rate; return (int)rate;