Support Uno4k/Ultimo4k
[vuplus_dvbapp] / lib / service / servicedvbfcc.cpp
index 610ccc4..7cabb03 100644 (file)
@@ -137,6 +137,9 @@ void eDVBServiceFCCPlay::changeFCCMode()
                eDebug("[eDVBServiceFCCPlay::changeFCCMode][%s] disable FCC decoding.", m_reference.toString().c_str());
                m_fcc_mode = fcc_mode_preparing;
 
+               /* stop timeshift */
+               eDVBServicePlay::stopTimeshift();
+
                /* remove CaHandler */
                m_service_handler.removeCaHandler();
 
@@ -233,7 +236,7 @@ void eDVBServiceFCCPlay::updateFCCDecoder(bool sendSeekableStateChanged)
                h.getDecodeDemux(m_decode_demux);
                if (m_decode_demux)
                {
-                       m_decode_demux->getMPEGDecoder(m_decoder, m_is_primary);
+                       m_decode_demux->getMPEGDecoder(m_decoder, m_decoder_index);
                        if (m_decoder)
                                m_decoder->connectVideoEvent(slot(*this, &eDVBServiceFCCPlay::video_event), m_video_event_connection);
                }
@@ -410,15 +413,23 @@ void eDVBServiceFCCPlay::FCCDecoderStop()
 {
        eDebug("[eDVBServiceFCCPlay::FCCDecoderStop][%s]", m_reference.toString().c_str());
 
-       if ((m_fcc_flag & fcc_ready) && m_decoder)
+       if (m_decoder)
        {
                m_teletext_parser = 0;
                m_new_subtitle_page_connection = 0;
                m_subtitle_parser = 0;
                m_new_dvb_subtitle_page_connection = 0;
 
-               m_decoder->fccDecoderStop();
-               m_fcc_flag &=~fcc_decoding;
+               if (m_fcc_flag & fcc_ready)
+               {
+                       m_decoder->fccDecoderStop();
+                       m_fcc_flag &=~fcc_decoding;
+               }
+               else if (m_fcc_flag & fcc_novideo)
+               {
+                       m_video_event_connection = 0;
+                       m_decoder = 0;
+               }
        }
 }