diff --git a/src/driver/record.cpp b/src/driver/record.cpp index fee238184..7a029bcbe 100644 --- a/src/driver/record.cpp +++ b/src/driver/record.cpp @@ -2094,7 +2094,7 @@ bool CStreamRec::Open(CZapitChannel * channel) return false; std::string pretty_name,headers; - if (!CMoviePlayerGui::getInstance(true).getLiveUrl(channel->getChannelID(), channel->getUrl(), channel->getScriptName(), url, pretty_name, recMovieInfo->epgInfo1, recMovieInfo->epgInfo2,headers)) { + if (!CMoviePlayerGui::getInstance(true).getLiveUrl(channel->getUrl(), channel->getScriptName(), url, pretty_name, recMovieInfo->epgInfo1, recMovieInfo->epgInfo2,headers)) { printf("%s: getLiveUrl() [%s] failed!\n", __FUNCTION__, url.c_str()); return false; } diff --git a/src/driver/streamts.cpp b/src/driver/streamts.cpp index f04cd70bc..8db18c81c 100644 --- a/src/driver/streamts.cpp +++ b/src/driver/streamts.cpp @@ -776,7 +776,7 @@ bool CStreamStream::Open() return false; std::string pretty_name, livestreamInfo1, livestreamInfo2, headers; - if (!CMoviePlayerGui::getInstance(true).getLiveUrl(channel->getChannelID(), channel->getUrl(), channel->getScriptName(), url, pretty_name, livestreamInfo1, livestreamInfo2,headers)) { + if (!CMoviePlayerGui::getInstance(true).getLiveUrl(channel->getUrl(), channel->getScriptName(), url, pretty_name, livestreamInfo1, livestreamInfo2,headers)) { printf("%s: getLiveUrl() [%s] failed!\n", __FUNCTION__, url.c_str()); return false; } diff --git a/src/eitd/edvbstring.cpp b/src/eitd/edvbstring.cpp index cb495b1cc..9267630da 100644 --- a/src/eitd/edvbstring.cpp +++ b/src/eitd/edvbstring.cpp @@ -2305,28 +2305,31 @@ const std::string convertLatin1UTF8(const std::string &string) int isUTF8(const std::string &string) { unsigned int len=string.size(); + unsigned char c; for (unsigned int i=0; i < len;) { int trailing = 0; - if (string[i] >> 7 == 0) // 0xxxxxxx + c = string[i] & 0xFF; + + if (c >> 7 == 0) // 0xxxxxxx { i++; continue; } - if (string[i] >> 5 == 6) // 110xxxxx 10xxxxxx + if (c >> 5 == 6) // 110xxxxx 10xxxxxx { if (++i >= len) return 0; trailing = 1; } - else if (string[i] >> 4 == 14) // 1110xxxx 10xxxxxx 10xxxxxx + else if (c >> 4 == 14) // 1110xxxx 10xxxxxx 10xxxxxx { if (++i >= len) return 0; trailing = 2; } - else if ((string[i] >> 3) == 30) // 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx + else if (c >> 3 == 30) // 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx { if (++i >= len) return 0; @@ -2335,7 +2338,7 @@ int isUTF8(const std::string &string) return 0; while (trailing) { - if (i >= len || string[i] >> 6 != 2) + if (i >= len || (string[i] & 0xFF) >> 6 != 2) return 0; trailing--; i++; diff --git a/src/gui/movieplayer.cpp b/src/gui/movieplayer.cpp index 2c9472427..727b7cf5b 100644 --- a/src/gui/movieplayer.cpp +++ b/src/gui/movieplayer.cpp @@ -961,10 +961,9 @@ bool CMoviePlayerGui::selectLivestream(std::vector &streamLis return false; } -bool CMoviePlayerGui::getLiveUrl(const t_channel_id chan, const std::string &url, const std::string &script, std::string &realUrl, std::string &_pretty_name, std::string &info1, std::string &info2, std::string &header) +bool CMoviePlayerGui::getLiveUrl(const std::string &url, const std::string &script, std::string &realUrl, std::string &_pretty_name, std::string &info1, std::string &info2, std::string &header) { - static t_channel_id oldChan = 0; - static std::vector liveStreamList; + std::vector liveStreamList; livestream_info_t info; if (script.empty()) { @@ -978,22 +977,15 @@ bool CMoviePlayerGui::getLiveUrl(const t_channel_id chan, const std::string &url size_t pos = _script.find(".lua"); if (!file_exists(_script.c_str()) || (pos == std::string::npos) || (_script.length()-pos != 4)) { - liveStreamList.clear(); printf(">>>>> [%s:%s:%d] script error\n", __file__, __func__, __LINE__); return false; } - if ((oldChan != chan) || liveStreamList.empty()) { - liveStreamList.clear(); - if (!luaGetUrl(_script, url, liveStreamList)) { - liveStreamList.clear(); - printf(">>>>> [%s:%s:%d] lua script error\n", __file__, __func__, __LINE__); - return false; - } - oldChan = chan; + if (!luaGetUrl(_script, url, liveStreamList)) { + printf(">>>>> [%s:%s:%d] lua script error\n", __file__, __func__, __LINE__); + return false; } if (!selectLivestream(liveStreamList, g_settings.livestreamResolution, &info)) { - liveStreamList.clear(); printf(">>>>> [%s:%s:%d] error selectLivestream\n", __file__, __func__, __LINE__); return false; } @@ -1062,7 +1054,7 @@ bool CMoviePlayerGui::PlayBackgroundStart(const std::string &file, const std::st std::string realUrl; std::string _pretty_name = name; cookie_header.clear(); - if (!getLiveUrl(chan, file, script, realUrl, _pretty_name, livestreamInfo1, livestreamInfo2, cookie_header)) { + if (!getLiveUrl(file, script, realUrl, _pretty_name, livestreamInfo1, livestreamInfo2, cookie_header)) { return false; } diff --git a/src/gui/movieplayer.h b/src/gui/movieplayer.h index c87a71d18..b0da2d4c2 100644 --- a/src/gui/movieplayer.h +++ b/src/gui/movieplayer.h @@ -269,7 +269,7 @@ class CMoviePlayerGui : public CMenuTarget bool getBlockedFromPlugin() { return blockedFromPlugin; }; void setLuaInfoFunc(lua_State* L, bool func) { luaState = L; haveLuaInfoFunc = func; }; void getLivestreamInfo(std::string *i1, std::string *i2) { *i1=livestreamInfo1; *i2=livestreamInfo2; }; - bool getLiveUrl(const t_channel_id chan, const std::string &url, const std::string &script, std::string &realUrl, std::string &_pretty_name, std::string &info1, std::string &info2, std::string &header); + bool getLiveUrl(const std::string &url, const std::string &script, std::string &realUrl, std::string &_pretty_name, std::string &info1, std::string &info2, std::string &header); }; #endif diff --git a/src/gui/widget/textbox.cpp b/src/gui/widget/textbox.cpp index 043ffbaac..e669687ae 100644 --- a/src/gui/widget/textbox.cpp +++ b/src/gui/widget/textbox.cpp @@ -716,7 +716,7 @@ void CTextBox::refreshText(void) frameBuffer->paintBoxRel(tx, ty-th, tw, th, COL_RED, m_nBgRadius, m_nBgRadiusType); #endif //TRACE("[CTextBox] %s Line %d m_cFrame.iX %d m_cFrameTextRel.iX %d\r\n", __FUNCTION__, __LINE__, m_cFrame.iX, m_cFrameTextRel.iX); - m_pcFontText->RenderString(tx, ty, tw, m_cLineArray[i].c_str(), m_textColor, 0, m_renderMode | ((m_utf8_encoded) ? Font::IS_UTF8 : 0)); + m_pcFontText->RenderString(tx, ty, tw, m_cLineArray[i].c_str(), m_textColor, 0, (m_renderMode | m_utf8_encoded) ? Font::IS_UTF8 : 0); m_old_cText = m_cText; y += m_nFontTextHeight; }