diff --git a/src/gui/movieplayer.cpp b/src/gui/movieplayer.cpp index 874df00af..763d72c66 100644 --- a/src/gui/movieplayer.cpp +++ b/src/gui/movieplayer.cpp @@ -1294,7 +1294,7 @@ void CMoviePlayerGui::quickZap(neutrino_msg_t msg) if ((msg == CRCInput::RC_right) || msg == (neutrino_msg_t) g_settings.key_quickzap_up) { //printf("CMoviePlayerGui::%s: CRCInput::RC_right or g_settings.key_quickzap_up\n", __func__); - if (isLuaPlay) + if (isLuaPlay || isUPNP) { playstate = CMoviePlayerGui::STOPPED; keyPressed = CMoviePlayerGui::PLUGIN_PLAYSTATE_NEXT; @@ -1321,7 +1321,7 @@ void CMoviePlayerGui::quickZap(neutrino_msg_t msg) else if ((msg == CRCInput::RC_left) || msg == (neutrino_msg_t) g_settings.key_quickzap_down) { //printf("CMoviePlayerGui::%s: CRCInput::RC_left or g_settings.key_quickzap_down\n", __func__); - if (isLuaPlay) + if (isLuaPlay || isUPNP) { playstate = CMoviePlayerGui::STOPPED; keyPressed = CMoviePlayerGui::PLUGIN_PLAYSTATE_PREV; diff --git a/src/gui/test_menu.cpp b/src/gui/test_menu.cpp index 8239f94dc..fe5147b8d 100644 --- a/src/gui/test_menu.cpp +++ b/src/gui/test_menu.cpp @@ -1126,9 +1126,12 @@ int CTestMenu::showTestMenu() w_test.setFooter(footerButtons, 2); w_test.addKey(CRCInput::RC_red, this, "footer_key"); w_test.addKey(CRCInput::RC_green, this, "footer_key"); - + int res = w_test.exec(NULL, ""); + delete w_hw; + delete w_cc; + delete w_msg; //exit - return w_test.exec(NULL, "");; + return res; } void CTestMenu::showCCTests(CMenuWidget *widget) diff --git a/src/gui/upnpbrowser.cpp b/src/gui/upnpbrowser.cpp index 2b335df76..b06d3ce83 100644 --- a/src/gui/upnpbrowser.cpp +++ b/src/gui/upnpbrowser.cpp @@ -155,6 +155,8 @@ void CUpnpBrowserGui::Init() m_item_y = m_header_y + m_header_height; m_footer_y = m_item_y + (m_listmaxshow * m_item_height); m_infobox_y = m_footer_y + m_footer_height + OFFSET_SHADOW + OFFSET_INTER; + video_key_msg = CMoviePlayerGui::PLUGIN_PLAYSTATE_NORMAL; + } CUpnpBrowserGui::~CUpnpBrowserGui() @@ -632,8 +634,9 @@ void CUpnpBrowserGui::playnext(void) playAudio((*entries)[0].resources[preferred].url, (*entries)[0].type); } else if (mime.substr(0,6) == "video/") { + m_frameBuffer->Clear(); + m_folderplay = true; playVideo((*entries)[0].title, (*entries)[0].resources[preferred].url); - m_folderplay = false; // FIXME else no way to stop in video folder } else if (mime.substr(0,6) == "image/") { if (m_folderplay) @@ -726,6 +729,7 @@ bool CUpnpBrowserGui::selectItem(std::string id) unsigned int liststart = 0; unsigned int selected = 0; unsigned int total = 0; + video_key_msg = CMoviePlayerGui::PLUGIN_PLAYSTATE_NORMAL; printf("selectItem: [%s]\n", id.c_str()); if (!getItems(id, liststart, entries, total)) @@ -857,19 +861,23 @@ bool CUpnpBrowserGui::selectItem(std::string id) m_folderplay = false; stopAudio(); } - else if (m_folderplay && msg == (neutrino_msg_t) CRCInput::RC_stop) { + else if (m_folderplay && (msg == (neutrino_msg_t) CRCInput::RC_stop + || video_key_msg == CMoviePlayerGui::PLUGIN_PLAYSTATE_STOP + || video_key_msg == CMoviePlayerGui::PLUGIN_PLAYSTATE_LEAVE_ALL)){ timeout = 0; m_folderplay = false; m_frameBuffer->Clear(); refresh = true; } - else if (m_folderplay && msg == (neutrino_msg_t) CRCInput::RC_prev) { + else if (m_folderplay && (msg == (neutrino_msg_t) CRCInput::RC_prev) + || video_key_msg == CMoviePlayerGui::PLUGIN_PLAYSTATE_PREV){ timeout = 0; m_playid -= 2; if (m_playid < 0) m_playid = 0; } - else if (m_folderplay && msg == (neutrino_msg_t) CRCInput::RC_next) { + else if (m_folderplay && (msg == (neutrino_msg_t) CRCInput::RC_next + || video_key_msg == CMoviePlayerGui::PLUGIN_PLAYSTATE_NEXT)){ timeout = 0; stopAudio(); } @@ -1226,8 +1234,11 @@ void CUpnpBrowserGui::paintDetails(UPnPEntry *entry, bool use_playing) void CUpnpBrowserGui::paintItem2DetailsLine(int pos) { if (pos < 0){ - if (dline) + if (dline){ dline->kill(); + infobox.kill(); + timebox.kill(); + } return; } @@ -1318,6 +1329,7 @@ void CUpnpBrowserGui::playVideo(std::string name, std::string url) m_frameBuffer->stopFrame(); CMoviePlayerGui::getInstance().SetFile(name, url); CMoviePlayerGui::getInstance().exec(NULL, "upnp"); + video_key_msg = CMoviePlayerGui::getInstance().getKeyPressed(); CNeutrinoApp::getInstance()->handleMsg(NeutrinoMessages::CHANGEMODE, NeutrinoMessages::mode_upnp | NeutrinoMessages::norezap); } diff --git a/src/gui/upnpbrowser.h b/src/gui/upnpbrowser.h index eff6326ad..758613cc0 100644 --- a/src/gui/upnpbrowser.h +++ b/src/gui/upnpbrowser.h @@ -96,6 +96,7 @@ class CUpnpBrowserGui : public CMenuTarget, public CListHelpers time_t m_time_played; bool m_playing_entry_is_shown; time_t timeout; + int video_key_msg; CComponentsDetailsLine * dline; CComponentsFooter footer; CComponentsInfoBox topbox, infobox, timebox;