Ticket #4666: mythtv_tv_play_deleteLater.diff

File mythtv_tv_play_deleteLater.diff, 3.3 KB (added by Shane Shrybman <gnome42@…>, 12 years ago)

deletLater() for tv_play

  • libs/libmythtv/tv_play.h

     
    118118    };
    119119
    120120    TV(void);
    121    ~TV();
     121   ~TV(); // Use deleteLater() instead of delete
    122122
    123123    bool Init(bool createWindow = true);
    124124
     
    225225    void ToggleMute(void);
    226226
    227227  public slots:
     228    void deleteLater(void);
    228229    void HandleOSDClosed(int osdType);
    229230
    230231  protected slots:
     
    238239    void TreeMenuSelected(OSDListTreeType *tree, OSDGenericTree *item);
    239240
    240241  protected:
     242    void Teardown(void);
    241243    void doEditSchedule(int editType = kScheduleProgramGuide);
    242244    static void *RecordedShowMenuHandler(void *param);
    243245    static void *ViewScheduledMenuHandler(void *param);
  • libs/libmythtv/tv_play.cpp

     
    103103    {
    104104        VERBOSE(VB_IMPORTANT, "Experienced fatal error:"
    105105                "Failed initializing TV");
    106         delete tv;
     106        tv->deleteLater();
     107        tv = NULL;
    107108        return false;
    108109    }
    109110
     
    233234   
    234235    bool allowrerecord = tv->getAllowRerecord();
    235236    bool deleterecording = tv->getRequestDelete();
    236    
    237     delete tv;
    238    
     237
     238    tv->deleteLater();
     239    tv = NULL;
     240
    239241    if (curProgram)
    240242    {
    241243        if (deleterecording)
     
    739741
    740742TV::~TV(void)
    741743{
     744     Teardown();
     745}
     746 
     747void TV::deleteLater(void)
     748{
     749     Teardown();
     750     QObject::deleteLater();
     751}
     752 
     753void TV::Teardown(void)
     754{
    742755    QMutexLocker locker(&osdlock); // prevent UpdateOSDSignal from continuing.
     756
     757    if (!runMainLoop)
     758        return;
     759
    743760    gContext->removeListener(this);
    744761    gContext->removeCurrentLocation();
    745762
  • programs/mythfrontend/manualbox.cpp

     
    193193    {
    194194        m_tv->StopEmbeddingOutput();
    195195        qApp->unlock();
    196         delete m_tv;
     196        m_tv->deleteLater();
    197197        qApp->lock();
    198198        m_tv = NULL;
    199199    }
     
    210210        {
    211211            VERBOSE(VB_IMPORTANT, "Experienced fatal error initialzing "
    212212                    "TV class in ManualBox::startPlayer().");
    213             delete m_tv;
    214             m_tv = 0;
     213            m_tv->deleteLater();
     214            m_tv = NULL;
    215215            tvstarting = false;
    216216            return;
    217217        }
     
    234234        else
    235235        {
    236236            qApp->unlock();
    237             delete m_tv;
     237            m_tv->deleteLater();
    238238            qApp->lock();
    239239            m_tv = NULL;
    240240            emit dismissWindow();
  • programs/mythtv/main.cpp

     
    273273    if (!tv->Init())
    274274    {
    275275        VERBOSE(VB_IMPORTANT, "Fatal Error: Could not initializing TV class.");
     276        tv->deleteLater();
    276277        return TV_EXIT_NO_TV;
    277278    }
    278279
     
    293294
    294295    TV::StartTV(pginfo, false);
    295296
     297    tv->deleteLater();
     298
    296299    if (pginfo)
    297300        delete pginfo;
    298301