diff --git a/engines/asylum/system/screen.cpp b/engines/asylum/system/screen.cpp index 3f4017de8cb..e745edd9ee7 100644 --- a/engines/asylum/system/screen.cpp +++ b/engines/asylum/system/screen.cpp @@ -696,9 +696,13 @@ void Screen::addGraphicToQueue(GraphicQueueItem const &item) { _queueItems.push_back(item); } +bool Screen::graphicQueueItemComparator(const GraphicQueueItem &item1, const GraphicQueueItem &item2) { + return item1.priority > item2.priority; +} + void Screen::drawGraphicsInQueue() { // Sort by priority first - graphicsSelectionSort(); + Common::sort(_queueItems.begin(), _queueItems.end(), &Screen::graphicQueueItemComparator); for (Common::Array::const_iterator i = _queueItems.begin(); i != _queueItems.end(); i++) { const GraphicQueueItem *item = i; @@ -718,31 +722,6 @@ void Screen::clearGraphicsInQueue() { _queueItems.clear(); } -void Screen::graphicsSelectionSort() { - uint32 maxIdx; - - if (!_queueItems.size()) - return; - - for (uint32 i = 0; i < _queueItems.size() - 1; i++) { - maxIdx = i; - - for (uint32 j = i + 1; j < _queueItems.size(); j++) - if (_queueItems[j].priority > _queueItems[maxIdx].priority) - maxIdx = j; - - if (i != maxIdx) - swapGraphicItem(i, maxIdx); - } -} - -void Screen::swapGraphicItem(int32 item1, int32 item2) { - GraphicQueueItem temp; - temp = _queueItems[item1]; - _queueItems[item1] = _queueItems[item2]; - _queueItems[item2] = temp; -} - void Screen::deleteGraphicFromQueue(ResourceId resourceId) { for (uint32 i = 0; i < _queueItems.size(); i++) { if (_queueItems[i].resourceId == resourceId) { diff --git a/engines/asylum/system/screen.h b/engines/asylum/system/screen.h index ec585b58953..82d21efafdf 100644 --- a/engines/asylum/system/screen.h +++ b/engines/asylum/system/screen.h @@ -175,8 +175,7 @@ private: void stopPaletteFadeTimer(); // Graphic queue - void graphicsSelectionSort(); - void swapGraphicItem(int32 item1, int32 item2); + static bool graphicQueueItemComparator(const GraphicQueueItem &item1, const GraphicQueueItem &item2); // Misc void clip(Common::Rect *source, Common::Rect *destination, int32 flags) const;