summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--media_player.c34
1 files changed, 22 insertions, 12 deletions
diff --git a/media_player.c b/media_player.c
index 607c1ee2..6bf14177 100644
--- a/media_player.c
+++ b/media_player.c
@@ -4,7 +4,7 @@
* See the main source file 'xineliboutput.c' for copyright information and
* how to reach the author.
*
- * $Id: media_player.c,v 1.79 2010-12-09 11:40:07 phintuka Exp $
+ * $Id: media_player.c,v 1.80 2010-12-09 11:43:56 phintuka Exp $
*
*/
@@ -872,6 +872,8 @@ eOSState cXinelibPlayerControl::ProcessKey(eKeys Key)
return osContinue;
}
+// --- DVD player -----------------------------------------------------------
+
//
// cDvdMenu
//
@@ -882,6 +884,8 @@ class cDvdMenu : public cOsdMenu {
public:
cDvdMenu(cXinelibPlayer *Player);
+
+ virtual eOSState ProcessKey(eKeys Key);
};
cDvdMenu::cDvdMenu(cXinelibPlayer *Player) : cOsdMenu(tr("DVD Menu")), m_Player(Player)
@@ -895,6 +899,22 @@ cDvdMenu::cDvdMenu(cXinelibPlayer *Player) : cOsdMenu(tr("DVD Menu")), m_Player(
Display();
}
+eOSState cDvdMenu::ProcessKey(eKeys Key)
+{
+ eOSState state = cOsdMenu::ProcessKey(Key);
+ switch (state) {
+ case osUser1: m_Player->Control("EVENT XINE_EVENT_INPUT_MENU1"); return osEnd;
+ case osUser2: m_Player->Control("EVENT XINE_EVENT_INPUT_MENU2"); return osEnd;
+ case osUser3: m_Player->Control("EVENT XINE_EVENT_INPUT_MENU3"); return osEnd;
+ case osUser4: m_Player->Control("EVENT XINE_EVENT_INPUT_MENU4"); return osEnd;
+ case osUser5: m_Player->Control("EVENT XINE_EVENT_INPUT_MENU5"); return osEnd;
+ case osBack:
+ case osEnd: return osEnd;
+ default: break;
+ }
+ return state;
+}
+
//
// cXinelibDvdPlayerControl
//
@@ -946,18 +966,8 @@ eOSState cXinelibDvdPlayerControl::ProcessKey(eKeys Key)
// Handle menu selection
if (m_DvdMenu) {
- if (Key == kRed)
+ if (Key == kRed || m_DvdMenu->ProcessKey(Key) == osEnd)
Hide();
- else switch(m_DvdMenu->ProcessKey(Key)) {
- case osUser1: Hide(); m_Player->Control("EVENT XINE_EVENT_INPUT_MENU1"); break;
- case osUser2: Hide(); m_Player->Control("EVENT XINE_EVENT_INPUT_MENU2"); break;
- case osUser3: Hide(); m_Player->Control("EVENT XINE_EVENT_INPUT_MENU3"); break;
- case osUser4: Hide(); m_Player->Control("EVENT XINE_EVENT_INPUT_MENU4"); break;
- case osUser5: Hide(); m_Player->Control("EVENT XINE_EVENT_INPUT_MENU5"); break;
- case osBack:
- case osEnd: Hide(); break;
- default: break;
- }
return osContinue;
}