m_gridIndex.push_back(blocks);
}
- UpdateLayout(true); // true to refresh all items
+ FreeItemsMemory();
+ UpdateLayout();
/* Create Ruler items */
CDateTime ruler; ruler.SetFromUTCDateTime(m_gridStart);
}
}
-void CGUIEPGGridContainer::UpdateLayout(bool updateAllItems)
-{
- // if container is invalid, either new data has arrived, or m_blockSize has changed
- // need to run UpdateItems rather than CalculateLayout?
- if (updateAllItems)
- { // free memory of items
- for (std::vector<CGUIListItemPtr>::iterator it = m_channelItems.begin(); it != m_channelItems.end(); it++)
- (*it)->FreeMemory();
- for (std::vector<CGUIListItemPtr>::iterator it = m_rulerItems.begin(); it != m_rulerItems.end(); it++)
- (*it)->FreeMemory();
- for (std::vector<CGUIListItemPtr>::iterator it = m_programmeItems.begin(); it != m_programmeItems.end(); it++)
- (*it)->FreeMemory();
- }
-
- // and recalculate the layout
- CalculateLayout();
-}
-
CStdString CGUIEPGGridContainer::GetDescription() const
{
CStdString strLabel;
__FUNCTION__, m_gridStart.GetAsLocalizedDateTime(false, true).c_str(), m_gridEnd.GetAsLocalizedDateTime(false, true).c_str());
}
-void CGUIEPGGridContainer::CalculateLayout()
+void CGUIEPGGridContainer::UpdateLayout()
{
CGUIListItemLayout *oldFocusedChannelLayout = m_focusedChannelLayout;
CGUIListItemLayout *oldChannelLayout = m_channelLayout;
m_renderOffset = offset;
}
+void CGUIEPGGridContainer::FreeItemsMemory()
+{
+ // free memory of items
+ for (std::vector<CGUIListItemPtr>::iterator it = m_channelItems.begin(); it != m_channelItems.end(); it++)
+ (*it)->FreeMemory();
+ for (std::vector<CGUIListItemPtr>::iterator it = m_rulerItems.begin(); it != m_rulerItems.end(); it++)
+ (*it)->FreeMemory();
+ for (std::vector<CGUIListItemPtr>::iterator it = m_programmeItems.begin(); it != m_programmeItems.end(); it++)
+ (*it)->FreeMemory();
+}
+
void CGUIEPGGridContainer::FreeChannelMemory(int keepStart, int keepEnd)
{
if (keepStart < keepEnd)
void ChannelScroll(int amount);
void ProgrammesScroll(int amount);
void ValidateOffset();
- void UpdateLayout(bool refreshAllItems = false);
- void CalculateLayout();
+ void UpdateLayout();
void Reset();
void ClearGridIndex(void);
// the "movement" was simply due to the list being repopulated (thus cursor position
// changing around)
+ void FreeItemsMemory();
void FreeChannelMemory(int keepStart, int keepEnd);
void FreeProgrammeMemory(int channel, int keepStart, int keepEnd);
void FreeRulerMemory(int keepStart, int keepEnd);