Ticket #743: mpegstreamdata-cleanup.diff

File mpegstreamdata-cleanup.diff, 2.7 KB (added by Stuart Auchterlonie, 15 years ago)

Consolidation of duplicate code.

  • libs/libmythtv/mpeg/mpegstreamdata.cpp

    old new  
    370370        case TableID::PAT:
    371371        {
    372372            SetVersionPAT(psip.Version());
     373            ProgramAssociationTable *pat =
     374                new ProgramAssociationTable(psip);
    373375            if (_cache_tables)
    374             {
    375                 ProgramAssociationTable *pat =
    376                     new ProgramAssociationTable(psip);
    377376                CachePAT(pat);
    378                 emit UpdatePAT(pat);
    379                 if ((_desired_program >= 0) && CreatePATSingleProgram(*pat))
    380                     emit UpdatePATSingleProgram(PATSingleProgram());
    381             }
    382             else
    383             {
    384                 ProgramAssociationTable pat(psip);
    385                 emit UpdatePAT(&pat);
    386                 if ((_desired_program >= 0) && CreatePATSingleProgram(pat))
    387                     emit UpdatePATSingleProgram(PATSingleProgram());
    388             }
     377            emit UpdatePAT(pat);
     378            if ((_desired_program >= 0) && CreatePATSingleProgram(*pat))
     379                emit UpdatePATSingleProgram(PATSingleProgram());
     380            if (!_cache_tables)
     381                delete pat;
    389382            return true;
    390383        }
    391384        case TableID::PMT:
    392385        {
    393386            SetVersionPMT(psip.TableIDExtension(), psip.Version());
     387            ProgramMapTable *pmt = new ProgramMapTable(psip);
    394388            if (_cache_tables)
    395             {
    396                 ProgramMapTable *pmt = new ProgramMapTable(psip);
    397389                CachePMT(pmt->ProgramNumber(), pmt);
    398                 emit UpdatePMT(pmt->ProgramNumber(), pmt);
    399                 if (pid == _pid_pmt_single_program)
    400                 {
    401                     if (CreatePMTSingleProgram(*pmt))
    402                         emit UpdatePMTSingleProgram(PMTSingleProgram());
    403                 }
    404             }
    405             else
     390            emit UpdatePMT(pmt->ProgramNumber(), pmt);
     391            if (pid == _pid_pmt_single_program)
    406392            {
    407                 ProgramMapTable pmt(psip);
    408                 emit UpdatePMT(pmt.ProgramNumber(), &pmt);
    409                 if (pid == _pid_pmt_single_program)
    410                 {
    411                     if (CreatePMTSingleProgram(pmt))
    412                         emit UpdatePMTSingleProgram(PMTSingleProgram());
    413                 }
     393                if (CreatePMTSingleProgram(*pmt))
     394                    emit UpdatePMTSingleProgram(PMTSingleProgram());
    414395            }
     396            if (!_cache_tables)
     397                delete pmt;
    415398            return true;
    416399        }
    417400    }