diff options
author | woro <woro@e10066b5-e1e2-0310-b819-94efdf66514b> | 2008-02-07 18:20:37 +0000 |
---|---|---|
committer | woro <woro@e10066b5-e1e2-0310-b819-94efdf66514b> | 2008-02-07 18:20:37 +0000 |
commit | 86fa797a40e5d5b95d821dc5009d91700fe1d30b (patch) | |
tree | 09d5abc886fe2eb232abfe5e488c088c994d9912 | |
parent | 79490eb023956e9ea04d1be02f0e0e3555126fac (diff) | |
download | vdr-plugin-muggle-86fa797a40e5d5b95d821dc5009d91700fe1d30b.tar.gz vdr-plugin-muggle-86fa797a40e5d5b95d821dc5009d91700fe1d30b.tar.bz2 |
playing just one track with non existing file: player started although
nothing there to be played
Solution: selection.listitems.size() no longer refreshes listitems
git-svn-id: https://vdr-muggle.svn.sourceforge.net/svnroot/vdr-muggle/trunk/muggle-plugin@1000 e10066b5-e1e2-0310-b819-94efdf66514b
-rw-r--r-- | mg_selection.c | 24 | ||||
-rw-r--r-- | mg_selection.h | 1 | ||||
-rw-r--r-- | vdr_menu.c | 4 |
3 files changed, 22 insertions, 7 deletions
diff --git a/mg_selection.c b/mg_selection.c index d00537f..b9a860f 100644 --- a/mg_selection.c +++ b/mg_selection.c @@ -129,7 +129,7 @@ mgSelection::mgListItems::sort(bool bycount,mgSortBy SortBy) void mgSelection::mgListItems::clear() { - for (unsigned int i=0;i<m_items.size();i++) + for (unsigned int i=0;i<size();i++) delete m_items[i]; m_items.clear(); } @@ -137,19 +137,26 @@ mgSelection::mgListItems::clear() bool mgSelection::mgListItems::operator==(const mgListItems&x) const { - bool result = m_items.size()==x.m_items.size(); + bool result = size()==x.size(); if (result) for (unsigned int i=0;i<size();i++) result &= *(m_items[i])==*(x.m_items[i]); return result; } +void +mgSelection::mgListItems::refresh() +{ + if (!m_sel) + mgError("mgListItems: m_sel is 0"); + m_sel->refreshValues(); +} + size_t mgSelection::mgListItems::size() const { if (!m_sel) mgError("mgListItems: m_sel is 0"); - m_sel->refreshValues(); return m_items.size(); } @@ -159,7 +166,7 @@ mgSelection::mgListItems::operator[](unsigned int idx) if (!m_sel) mgError("mgListItems: m_sel is 0"); m_sel->refreshValues(); - assert(idx<m_items.size()); + assert(idx<size()); return m_items[idx]; } @@ -174,7 +181,7 @@ mgSelection::mgListItems::search (const string v) const { if (!m_sel) mgError("mgListItems::index(%s): m_sel is 0",v.c_str()); - unsigned int itemsize = m_items.size(); + unsigned int itemsize = size(); const char *cstr = v.c_str(); unsigned int clen = strlen(cstr); int result = -1; @@ -272,6 +279,7 @@ mgSelection::getCurrentValue() string mgSelection::getValue(unsigned int idx) const { + listitems.refresh(); if (idx>=listitems.size()) return ""; else @@ -457,6 +465,7 @@ string mgSelection::exportM3U () bool mgSelection::empty() { + listitems.refresh(); return ( listitems.size () == 0); } @@ -500,6 +509,7 @@ unsigned int mgSelection::gotoPosition () { assert(m_level<ordersize()); + listitems.refresh(); unsigned int itemsize = listitems.size(); if (itemsize==0) m_position = 0; @@ -960,6 +970,7 @@ bool mgSelection::enter (unsigned int position) return true; } mgListItems prev; + listitems.refresh(); if (m_level<ordersize()-2 && m_fall_through && listitems.size()<100) prev=listitems; while (1) @@ -983,6 +994,7 @@ bool mgSelection::enter (unsigned int position) break; if (m_level>=ordersize()-2) break; + listitems.refresh(); if (listitems.size () > 1 && !(prev==listitems)) break; } @@ -998,6 +1010,7 @@ mgSelection::leave () unsigned int position=m_position; assert(!Keys.empty()); mgListItems prev; + listitems.refresh(); if (m_level>1 && m_fall_through && listitems.size()<100) prev=listitems; while (1) @@ -1014,6 +1027,7 @@ mgSelection::leave () break; if (m_level==0) break; + listitems.refresh(); if (listitems.size () > 1 && !(prev==listitems)) break; } diff --git a/mg_selection.h b/mg_selection.h index ec4307b..d56d0e6 100644 --- a/mg_selection.h +++ b/mg_selection.h @@ -64,6 +64,7 @@ class mgSelection string& id(unsigned int); unsigned int count(unsigned int); bool operator==(const mgListItems&x) const; + void refresh(); size_t size() const; int search (const string v) const; unsigned int valindex (const string v) const; @@ -55,8 +55,7 @@ void Play(mgSelection *sel, bool enter) s->InitDefaultOrder(1); if (enter) s->enter(); - s->skipItems(0); // make sure we start with a valid item - if (s->empty()) // no valid item exists + if (!s->skipItems(0)) // no valid item exists { delete s; return; @@ -517,6 +516,7 @@ void mgMenu::AddSelectionItems (mgSelection *sel,mgActions act) { sel->Activate(); + sel->listitems.refresh(); for (unsigned int i = 0; i < sel->listitems.size (); i++) { mgAction *a = GenerateAction(act, actEntry); |