neutrino: try to fix parental bypass by

quit from audio player / picture viewer / movie player and starting channel in PiP
This commit is contained in:
[CST] Focus
2014-11-11 14:39:16 +03:00
parent d20fc8f1bc
commit 5bd14ea4b8
4 changed files with 30 additions and 15 deletions

View File

@@ -886,10 +886,7 @@ int CChannelList::show()
calcSize();
paint();
} else {
if(CNeutrinoApp::getInstance()->StartPip((*chanlist)[selected]->getChannelID())) {
calcSize();
paint();
}
handleMsg(NeutrinoMessages::EVT_PROGRAMLOCKSTATUS, 0x100, true);
}
}
}
@@ -973,7 +970,7 @@ bool CChannelList::showInfo(int number, int epgpos)
return true;
}
int CChannelList::handleMsg(const neutrino_msg_t msg, neutrino_msg_data_t data)
int CChannelList::handleMsg(const neutrino_msg_t msg, neutrino_msg_data_t data, bool pip)
{
bool startvideo = true;
@@ -1014,9 +1011,15 @@ int CChannelList::handleMsg(const neutrino_msg_t msg, neutrino_msg_data_t data)
if (data >= 0x100 && (*chanlist)[selected]->last_unlocked_time + g_settings.parentallock_zaptime * 60 > time_monotonic())
goto out;
if (pip && (*chanlist)[selected]->Locked() == g_settings.parentallock_defaultlocked)
goto out;
/* OK, let's ask for a PIN */
g_RemoteControl->stopvideo();
//printf("stopped video\n");
if (!pip) {
g_RemoteControl->is_video_started = true;
g_RemoteControl->stopvideo();
//printf("stopped video\n");
}
zapProtection = new CZapProtection(g_settings.parentallock_pincode, data);
if (zapProtection->check())
@@ -1051,8 +1054,15 @@ int CChannelList::handleMsg(const neutrino_msg_t msg, neutrino_msg_data_t data)
zapProtection = NULL;
out:
if (startvideo)
g_RemoteControl->startvideo();
if (startvideo) {
if(pip) {
if (CNeutrinoApp::getInstance()->StartPip((*chanlist)[selected]->getChannelID())) {
calcSize();
paint();
}
} else
g_RemoteControl->startvideo();
}
return messages_return::handled;
}

View File

@@ -210,7 +210,7 @@ public:
int hasChannelID(t_channel_id channel_id);
void setSelected( int nChannelNr); // for adjusting bouquet's channel list after numzap or quickzap
int handleMsg(const neutrino_msg_t msg, neutrino_msg_data_t data);
int handleMsg(const neutrino_msg_t msg, neutrino_msg_data_t data, bool pip = false);
int getSize() const;
bool isEmpty() const;

View File

@@ -179,8 +179,10 @@ void CMoviePlayerGui::cutNeutrino()
if (!isWebTV)
g_Sectionsd->setPauseScanning(true);
m_LastMode = (CNeutrinoApp::getInstance()->getMode() | NeutrinoMessages::norezap);
printf("%s: save mode %d\n", __func__, m_LastMode & NeutrinoMessages::mode_mask);fflush(stdout);
m_LastMode = (CNeutrinoApp::getInstance()->getMode() /*| NeutrinoMessages::norezap*/);
if (isWebTV)
m_LastMode |= NeutrinoMessages::norezap;
printf("%s: save mode %x\n", __func__, m_LastMode);fflush(stdout);
int new_mode = NeutrinoMessages::norezap | (isWebTV ? NeutrinoMessages::mode_webtv : NeutrinoMessages::mode_ts);
CNeutrinoApp::getInstance()->handleMsg(NeutrinoMessages::CHANGEMODE, new_mode);
}
@@ -199,10 +201,11 @@ void CMoviePlayerGui::restoreNeutrino()
g_Zapit->unlockPlayBack();
g_Sectionsd->setPauseScanning(false);
printf("%s: restore mode %d\n", __func__, m_LastMode & NeutrinoMessages::mode_mask);fflush(stdout);
printf("%s: restore mode %x\n", __func__, m_LastMode);fflush(stdout);
#if 0
if (m_LastMode == NeutrinoMessages::mode_tv)
g_RCInput->postMsg(NeutrinoMessages::EVT_PROGRAMLOCKSTATUS, 0x200, false);
#endif
if (m_LastMode != NeutrinoMessages::mode_unknown)
CNeutrinoApp::getInstance()->handleMsg(NeutrinoMessages::CHANGEMODE, m_LastMode);
@@ -213,7 +216,7 @@ printf("%s: restore mode %d\n", __func__, m_LastMode & NeutrinoMessages::mode_ma
CZapit::getInstance()->Rezap();
}
#endif
printf("%s: restoring done.\n", __func__);fflush(stdout);
printf("%s: restoring done.\n", __func__);fflush(stdout);
}
int CMoviePlayerGui::exec(CMenuTarget * parent, const std::string & actionKey)

View File

@@ -3745,8 +3745,10 @@ int CNeutrinoApp::exec(CMenuTarget* parent, const std::string & actionKey)
CMoviePlayerGui::getInstance().exec(NULL, actionKey);
if(_mode == NeutrinoMessages::mode_radio )
videoDecoder->ShowPicture(DATADIR "/neutrino/icons/radiomode.jpg");
#if 0
else if (_mode == mode_webtv)
tvMode(true);
#endif
return menu_return::RETURN_EXIT_ALL;
}
else if(actionKey=="audioplayer" || actionKey == "inetplayer") {