CChannelList: fix "prev bouquet" if empty bouquets are present

also do proper wrap-around when selecting previous / next bouquet
This commit is contained in:
Stefan Seyfried
2013-04-06 13:15:40 +02:00
parent 37d70cd345
commit 21cb7fc249

View File

@@ -757,12 +757,13 @@ int CChannelList::show()
if (!bouquetList->Bouquets.empty()) { if (!bouquetList->Bouquets.empty()) {
bool found = true; bool found = true;
int dir = msg == (neutrino_msg_t)g_settings.key_bouquet_up ? 1 : -1; int dir = msg == (neutrino_msg_t)g_settings.key_bouquet_up ? 1 : -1;
int b_size = bouquetList->Bouquets.size(); int b_size = bouquetList->Bouquets.size(); /* bigger than 0 */
int nNext = (bouquetList->getActiveBouquetNumber() + b_size + dir) % b_size; int nNext = (bouquetList->getActiveBouquetNumber() + b_size + dir) % b_size;
if(bouquetList->Bouquets[nNext]->channelList->isEmpty() ) { if(bouquetList->Bouquets[nNext]->channelList->isEmpty() ) {
found = false; found = false;
int n_old = nNext;
nNext = (nNext + b_size + dir) % b_size; nNext = (nNext + b_size + dir) % b_size;
for (int i = nNext; i < b_size; i++) { for (int i = nNext; i != n_old; i = (i + b_size + dir) % b_size) {
if( !bouquetList->Bouquets[i]->channelList->isEmpty() ) { if( !bouquetList->Bouquets[i]->channelList->isEmpty() ) {
found = true; found = true;
nNext = i; nNext = i;