void CGUIDialogPVRChannelsOSD::Update() { // lock our display, as this window is rendered from the player thread g_graphicsContext.Lock(); if (!IsObserving(g_infoManager)) g_infoManager.RegisterObserver(this); m_viewControl.SetCurrentView(DEFAULT_VIEW_LIST); // empty the list ready for population Clear(); CPVRChannelPtr channel; g_PVRManager.GetCurrentChannel(channel); CPVRChannelGroupPtr group = g_PVRManager.GetPlayingGroup(channel->IsRadio()); if (group) { group->GetMembers(*m_vecItems); m_viewControl.SetItems(*m_vecItems); if(!m_group) { m_group = group; m_viewControl.SetSelectedItem(group->GetIndex(*channel)); SaveSelectedItem(group->GroupID()); } } g_graphicsContext.Unlock(); }