Ticket #9169: mediamon.diff

File mediamon.diff, 8.3 KB (added by lvr@…, 10 years ago)

Fix autoplay of DVD's CD's and photos

  • mythplugins/mythmusic/mythmusic/playbackbox.cpp

     
    468468                                            160, 160);
    469469                mainvisual->setVisual(visual_modes[current_visual]);
    470470                bannerDisable();
    471                 updateTrackInfo(curMeta);
     471                if (curMeta)
     472                    updateTrackInfo(curMeta);
    472473
    473474                if (!m_parent->IsExitingToMain())
    474475                    handled = true;
     
    10681069
    10691070        GenericTree *node = music_tree_list->getCurrentNode();
    10701071        curMeta = gMusicData->all_music->getMetadata(node->getInt());
    1071         updateTrackInfo(curMeta);
     1072        if (curMeta)
     1073            updateTrackInfo(curMeta);
    10721074
    10731075        setShuffleMode(gPlayer->getShuffleMode());
    10741076
     
    11061108                if (scan_for_cd)
    11071109                    updatePlaylistFromCD();
    11081110
     1111                cd_reader_thread->getLock()->lock();
     1112
    11091113                music_tree_list->showWholeTree(show_whole_tree);
    11101114                Q3ValueList <int> branches_to_current_node;
    11111115                branches_to_current_node.append(0); //  Root node
     
    11351139                if (curMeta)
    11361140                    updateTrackInfo(curMeta);
    11371141
     1142                cd_reader_thread->getLock()->unlock();
    11381143                return;     // Do not restart Timer
    11391144            }
    11401145            else
     
    13571362            gPlayer->getOutput()->SetTimecode(0);
    13581363    }
    13591364
    1360     bannerEnable(curMeta, show_album_art);
     1365    if (curMeta)
     1366        bannerEnable(curMeta, show_album_art);
    13611367}
    13621368
    13631369void PlaybackBoxMusic::visEnable()
     
    13881394{
    13891395    if (mainvisual->bannerIsShowing())
    13901396        bannerDisable();
    1391     else
     1397    else if (mdata)
    13921398        bannerEnable(mdata, false);
    13931399}
    13941400
     
    18011807                        if (node)
    18021808                        {
    18031809                            curMeta = gMusicData->all_music->getMetadata(node->getInt());
    1804                             updateTrackInfo(curMeta);
     1810                            if (curMeta)
     1811                                updateTrackInfo(curMeta);
    18051812
    18061813                            maxTime = curMeta->Length() / 1000;
    18071814
     
    18271834                    if (node)
    18281835                    {
    18291836                        curMeta = gMusicData->all_music->getMetadata(node->getInt());
    1830                         updateTrackInfo(curMeta);
     1837                        if (curMeta)
     1838                            updateTrackInfo(curMeta);
    18311839
    18321840                        maxTime = curMeta->Length() / 1000;
    18331841
     
    20692077
    20702078void PlaybackBoxMusic::updateTrackInfo(Metadata *mdata)
    20712079{
    2072     if (visualizer_status != 2)
     2080    if (mdata)
    20732081    {
    2074         if (title_text)
    2075             title_text->SetText(mdata->FormatTitle());
    2076         if (artist_text)
    2077             artist_text->SetText(mdata->FormatArtist());
    2078         if (album_text)
    2079             album_text->SetText(mdata->Album());
    2080         if (albumart_image)
    2081             showAlbumArtImage(mdata);
     2082        if (visualizer_status != 2)
     2083        {
     2084            if (title_text)
     2085                title_text->SetText(mdata->FormatTitle());
     2086            if (artist_text)
     2087                artist_text->SetText(mdata->FormatArtist());
     2088            if (album_text)
     2089                album_text->SetText(mdata->Album());
     2090            if (albumart_image)
     2091                showAlbumArtImage(mdata);
    20822092
    2083         if (showrating)
    2084         {
    2085             if (ratings_image)
    2086                 ratings_image->setRepeat(mdata->Rating());
     2093            if (showrating)
     2094            {
     2095                if (ratings_image)
     2096                    ratings_image->setRepeat(mdata->Rating());
     2097            }
    20872098        }
     2099        setTrackOnLCD(mdata);
    20882100    }
    2089     setTrackOnLCD(mdata);
    20902101}
    20912102
    20922103void PlaybackBoxMusic::showAlbumArtImage(Metadata *mdata)
     
    21642175        }
    21652176
    21662177        curMeta = gMusicData->all_music->getMetadata(node_int);
     2178        if (curMeta)
     2179            updateTrackInfo(curMeta);
    21672180
    2168         updateTrackInfo(curMeta);
    2169 
    21702181        maxTime = curMeta->Length() / 1000;
    21712182
    21722183        QString time_string = getTimeString(maxTime, 0);
  • mythplugins/mythmusic/mythmusic/main.cpp

     
    472472    }
    473473
    474474    if (gCoreContext->GetNumSetting("AutoPlayCD", 0))
     475    {
     476        // Empty the playlist to ensure CD is played first
     477        if (gMusicData->all_music)
     478            gMusicData->all_music->clearCDData();
     479        if (gMusicData->all_playlists)
     480            gMusicData->all_playlists->clearCDList();
     481
    475482        runMusicPlayback();
     483    }
    476484    else
    477485        mythplugin_run();
    478486}
  • mythplugins/mythgallery/mythgallery/iconview.cpp

     
    492492                {
    493493                    QDir currentDir(m_currDir);
    494494                    QDir rootDir(m_galleryDir);
    495                     if (currentDir != rootDir)
    496                         HandleSubDirEscape(m_galleryDir);
    497                     else
     495                    if (currentDir == rootDir)
    498496                        break;
     497                    if ( !HandleSubDirEscape(m_galleryDir))
     498                        break;
    499499                }
    500500                handled = HandleEscape();
    501501            }
  • mythtv/libs/libmyth/mythmediamonitor.cpp

     
    362362    {
    363363        if ((*it)->getDevicePath() == dev)
    364364        {
     365            // Ensure device gets an unmount
     366            (*it)->checkMedia();
     367
    365368            if (m_UseCount[*it] == 0)
    366369            {
    367370                (*it)->deleteLater();
     
    652655
    653656
    654657    GetMythMainWindow()->JumpTo("Main Menu");
     658    while (GetMythMainWindow()->IsExitingToMain())
     659        qApp->processEvents(); // Ensure jump is executed before calling handler
    655660    handlers.at(selected).callback(pMedia);
    656661}
    657662
     
    672677    // This gets called from outside the main thread so we need
    673678    // to post an event back to the main thread.
    674679    // We now send events for all non-error statuses, so plugins get ejects
    675     if (m_SendEvent && stat != MEDIASTAT_ERROR && stat != MEDIASTAT_UNKNOWN)
     680    if (m_SendEvent && stat != MEDIASTAT_ERROR && stat != MEDIASTAT_UNKNOWN &&
     681        // Don't send an event for a new device that's not mounted
     682        !(oldStatus == MEDIASTAT_UNPLUGGED && stat == MEDIASTAT_NOTMOUNTED))
    676683    {
    677684        // Should we ValidateAndLock() first?
    678685        QEvent *e = new MediaEvent(stat, pMedia);
  • mythtv/libs/libmyth/mythmediamonitor.cpp

     
    362362    {
    363363        if ((*it)->getDevicePath() == dev)
    364364        {
     365            // Ensure device gets an unmount
     366            (*it)->checkMedia();
     367
    365368            if (m_UseCount[*it] == 0)
    366369            {
    367370                (*it)->deleteLater();
     
    652655
    653656
    654657    GetMythMainWindow()->JumpTo("Main Menu");
     658    while (GetMythMainWindow()->IsExitingToMain())
     659        qApp->processEvents(); // Ensure jump is executed before calling handler
    655660    handlers.at(selected).callback(pMedia);
    656661}
    657662
     
    672677    // This gets called from outside the main thread so we need
    673678    // to post an event back to the main thread.
    674679    // We now send events for all non-error statuses, so plugins get ejects
    675     if (m_SendEvent && stat != MEDIASTAT_ERROR && stat != MEDIASTAT_UNKNOWN)
     680    if (m_SendEvent && stat != MEDIASTAT_ERROR && stat != MEDIASTAT_UNKNOWN &&
     681        // Don't send an event for a new device that's not mounted
     682        !(oldStatus == MEDIASTAT_UNPLUGGED && stat == MEDIASTAT_NOTMOUNTED))
    676683    {
    677684        // Should we ValidateAndLock() first?
    678685        QEvent *e = new MediaEvent(stat, pMedia);