mirror of
https://github.com/tuxbox-neutrino/neutrino.git
synced 2025-08-29 00:11:14 +02:00
Fix iterator; Simplify stop-all loop, please check
git-svn-id: file:///home/bas/coolstream_public_svn/THIRDPARTY/applications/neutrino-beta@1962 e54a6e83-5905-42d5-8d5c-058d10e6a962
This commit is contained in:
@@ -1021,9 +1021,9 @@ bool CRecordManager::Stop(const CTimerd::RecordingStopInfo * recinfo)
|
|||||||
for(nextmap_iterator_t it = nextmap.begin(); it != nextmap.end(); it++) {
|
for(nextmap_iterator_t it = nextmap.begin(); it != nextmap.end(); it++) {
|
||||||
if((*it)->eventID == recinfo->eventID) {
|
if((*it)->eventID == recinfo->eventID) {
|
||||||
printf("%s: removing pending eventID %d channel_id %llx\n", __FUNCTION__, recinfo->eventID, recinfo->channel_id);
|
printf("%s: removing pending eventID %d channel_id %llx\n", __FUNCTION__, recinfo->eventID, recinfo->channel_id);
|
||||||
nextmap.erase(it);
|
|
||||||
/* Note: CTimerd::RecordingInfo is a class! => typecast to avoid destructor call */
|
/* Note: CTimerd::RecordingInfo is a class! => typecast to avoid destructor call */
|
||||||
delete[] (unsigned char *) (*it);
|
delete[] (unsigned char *) (*it);
|
||||||
|
nextmap.erase(it);
|
||||||
ret = true;
|
ret = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -1173,7 +1173,9 @@ int CRecordManager::exec(CMenuTarget* parent, const std::string & actionKey )
|
|||||||
CMessageBox::mbrNo, CMessageBox::mbYes | CMessageBox::mbNo, NULL, 450, 30, false) == CMessageBox::mbrYes)
|
CMessageBox::mbrNo, CMessageBox::mbYes | CMessageBox::mbNo, NULL, 450, 30, false) == CMessageBox::mbrYes)
|
||||||
{
|
{
|
||||||
snprintf(rec_msg1, sizeof(rec_msg1)-1, "%s", g_Locale->getText(LOCALE_RECORDINGMENU_MULTIMENU_INFO_STOP_ALL));
|
snprintf(rec_msg1, sizeof(rec_msg1)-1, "%s", g_Locale->getText(LOCALE_RECORDINGMENU_MULTIMENU_INFO_STOP_ALL));
|
||||||
|
// focus: i think no sense for 2 loops, because this code run in the same thread as neutrino,
|
||||||
|
// so neutrino dont have a chance to handle RECORD_STOP before this function returns
|
||||||
|
#if 0
|
||||||
int i = 0;
|
int i = 0;
|
||||||
int recording_ids[RECORD_MAX_COUNT];
|
int recording_ids[RECORD_MAX_COUNT];
|
||||||
t_channel_id channel_ids[RECORD_MAX_COUNT];
|
t_channel_id channel_ids[RECORD_MAX_COUNT];
|
||||||
@@ -1217,11 +1219,28 @@ int CRecordManager::exec(CMenuTarget* parent, const std::string & actionKey )
|
|||||||
}else
|
}else
|
||||||
{
|
{
|
||||||
usleep(500000);
|
usleep(500000);
|
||||||
|
printf("CRecordManager::exec(ExitAll line %d) stop channel %llx recording_id %d\n", __LINE__, channel_ids[i2], recording_ids[i2]);
|
||||||
g_Timerd->stopTimerEvent(recording_ids[i2]);
|
g_Timerd->stopTimerEvent(recording_ids[i2]);
|
||||||
}
|
}
|
||||||
mutex.unlock();
|
mutex.unlock();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
int i = 0;
|
||||||
|
mutex.lock();
|
||||||
|
for(recmap_iterator_t it = recmap.begin(); it != recmap.end(); it++)
|
||||||
|
{
|
||||||
|
t_channel_id channel_id = it->first;
|
||||||
|
CRecordInstance * inst = it->second;
|
||||||
|
|
||||||
|
snprintf(rec_msg, sizeof(rec_msg)-1, rec_msg1, records-i, records);
|
||||||
|
inst->SetStopMessage(rec_msg);
|
||||||
|
|
||||||
|
printf("CRecordManager::exec(ExitAll line %d) found channel %llx recording_id %d\n", __LINE__, channel_id, inst->GetRecordingId());
|
||||||
|
g_Timerd->stopTimerEvent(inst->GetRecordingId());
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
mutex.unlock();
|
||||||
}
|
}
|
||||||
return menu_return::RETURN_EXIT_ALL;
|
return menu_return::RETURN_EXIT_ALL;
|
||||||
}else if(actionKey == "Record")
|
}else if(actionKey == "Record")
|
||||||
|
Reference in New Issue
Block a user