CPVRChannelPtr CPVRChannelGroupInternal::UpdateFromClient(const CPVRChannelPtr &channel, const CPVRChannelNumber &channelNumber) { CSingleLock lock(m_critSection); const PVRChannelGroupMember& realChannel(GetByUniqueID(channel->StorageId())); if (realChannel.channel) { realChannel.channel->UpdateFromClient(channel); return realChannel.channel; } else { unsigned int iChannelNumber = channelNumber.GetChannelNumber(); if (iChannelNumber == 0) iChannelNumber = static_cast<int>(m_sortedMembers.size()) + 1; PVRChannelGroupMember newMember(channel, CPVRChannelNumber(iChannelNumber, channelNumber.GetSubChannelNumber()), 0); channel->UpdatePath(GetPath()); m_sortedMembers.push_back(newMember); m_members.insert(std::make_pair(channel->StorageId(), newMember)); m_bChanged = true; SortAndRenumber(); } return channel; }
CPVRChannelPtr CPVRChannelGroupInternal::UpdateFromClient(const CPVRChannelPtr &channel, unsigned int iChannelNumber /* = 0 */) { assert(channel.get()); CSingleLock lock(m_critSection); const PVRChannelGroupMember& realChannel(GetByUniqueID(channel->StorageId())); if (realChannel.channel) { realChannel.channel->UpdateFromClient(channel); return realChannel.channel; } else { PVRChannelGroupMember newMember = { channel, iChannelNumber > 0l ? iChannelNumber : (int)m_sortedMembers.size() + 1 }; channel->UpdatePath(this); m_sortedMembers.push_back(newMember); m_members.insert(std::make_pair(channel->StorageId(), newMember)); m_bChanged = true; SortAndRenumber(); } return channel; }