FULLPIPE: Remove premature optimization in GlobalMessageQueueList::compact()
This fixes freeze in intro and most probably tons of other stuff. Kudos go to eriktorbjorn for debugging it.
This commit is contained in:
parent
789b4b694f
commit
6e6685a53d
1 changed files with 18 additions and 1 deletions
|
@ -557,16 +557,33 @@ void GlobalMessageQueueList::disableQueueById(int id) {
|
||||||
}
|
}
|
||||||
|
|
||||||
int GlobalMessageQueueList::compact() {
|
int GlobalMessageQueueList::compact() {
|
||||||
|
int *useList = new int[size() + 2];
|
||||||
|
|
||||||
|
for (uint i = 0; i < size() + 2; i++)
|
||||||
|
useList[i] = 0;
|
||||||
|
|
||||||
for (uint i = 0; i < size();) {
|
for (uint i = 0; i < size();) {
|
||||||
if (((MessageQueue *)_storage[i])->_isFinished) {
|
if (((MessageQueue *)_storage[i])->_isFinished) {
|
||||||
disableQueueById(_storage[i]->_id);
|
disableQueueById(_storage[i]->_id);
|
||||||
remove_at(i);
|
remove_at(i);
|
||||||
} else {
|
} else {
|
||||||
|
if (_storage[i]->_id < size() + 2)
|
||||||
|
useList[_storage[i]->_id] = 1;
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return size() + 1;
|
uint i;
|
||||||
|
|
||||||
|
for (i = 1; i < size() + 2; i++) {
|
||||||
|
if (!useList[i]) {
|
||||||
|
delete [] useList;
|
||||||
|
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GlobalMessageQueueList::addMessageQueue(MessageQueue *msg) {
|
void GlobalMessageQueueList::addMessageQueue(MessageQueue *msg) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue