bool CGUIWindowMusicSongs::OnContextButton(int itemNumber, CONTEXT_BUTTON button) { CFileItemPtr item; if (itemNumber >= 0 && itemNumber < m_vecItems->Size()) item = m_vecItems->Get(itemNumber); if ( m_vecItems->IsVirtualDirectoryRoot() && item) { if (CGUIDialogContextMenu::OnContextButton("music", item, button)) { if (button == CONTEXT_BUTTON_REMOVE_SOURCE) OnRemoveSource(itemNumber); Update(""); return true; } } switch (button) { case CONTEXT_BUTTON_SCAN: OnScan(itemNumber); return true; case CONTEXT_BUTTON_RIP_TRACK: OnRipTrack(itemNumber); return true; case CONTEXT_BUTTON_RIP_CD: OnRipCD(); return true; #ifdef HAS_CDDA_RIPPER case CONTEXT_BUTTON_CANCEL_RIP_CD: CCDDARipper::GetInstance().CancelJobs(); return true; #endif case CONTEXT_BUTTON_CDDB: if (m_musicdatabase.LookupCDDBInfo(true)) Refresh(); return true; case CONTEXT_BUTTON_DELETE: OnDeleteItem(itemNumber); return true; case CONTEXT_BUTTON_RENAME: OnRenameItem(itemNumber); return true; case CONTEXT_BUTTON_SWITCH_MEDIA: CGUIDialogContextMenu::SwitchMedia("music", m_vecItems->GetPath()); return true; default: break; } return CGUIWindowMusicBase::OnContextButton(itemNumber, button); }
void RTPSources::BYETimeout(const RTPTime &curtime, const RTPTime &timeoutdelay) { int newtotalcount = 0; int newsendercount = 0; int newactivecount = 0; RTPTime checktime = curtime; checktime -= timeoutdelay; sourcelist.GotoFirstElement(); while (sourcelist.HasCurrentElement()) { RTPInternalSourceData *srcdat = sourcelist.GetCurrentElement(); if (srcdat->ReceivedBYE()) { RTPTime byetime = srcdat->GetBYETime(); if ((srcdat != owndata) && (checktime > byetime)) { totalcount--; if (srcdat->IsSender()) sendercount--; if (srcdat->IsActive()) activecount--; sourcelist.DeleteCurrentElement(); OnBYETimeout(srcdat); OnRemoveSource(srcdat); delete srcdat; } else { newtotalcount++; if (srcdat->IsSender()) newsendercount++; if (srcdat->IsActive()) newactivecount++; sourcelist.GotoNextElement(); } } else { newtotalcount++; if (srcdat->IsSender()) newsendercount++; if (srcdat->IsActive()) newactivecount++; sourcelist.GotoNextElement(); } } totalcount = newtotalcount; // just to play it safe sendercount = newsendercount; activecount = newactivecount; }
void RTPSources::Timeout(const RTPTime &curtime, const RTPTime &timeoutdelay) { int newtotalcount = 0; int newsendercount = 0; int newactivecount = 0; RTPTime checktime = curtime; checktime -= timeoutdelay; sourcelist.GotoFirstElement(); while (sourcelist.HasCurrentElement()) { RTPInternalSourceData *srcdat = sourcelist.GetCurrentElement(); RTPTime lastmsgtime = srcdat->INF_GetLastMessageTime(); // we don't want to time out ourselves if ((srcdat != owndata) && (lastmsgtime < checktime)) // timeout { totalcount--; if (srcdat->IsSender()) sendercount--; if (srcdat->IsActive()) activecount--; sourcelist.DeleteCurrentElement(); OnTimeout(srcdat); OnRemoveSource(srcdat); delete srcdat; } else { newtotalcount++; if (srcdat->IsSender()) newsendercount++; if (srcdat->IsActive()) newactivecount++; sourcelist.GotoNextElement(); } } totalcount = newtotalcount; // just to play it safe sendercount = newsendercount; activecount = newactivecount; }
bool CGUIWindowJukeboxSongs::OnContextButton(CFileItemPtr pItem, CONTEXT_BUTTON button) { if (m_vecItems->IsVirtualDirectoryRoot() && pItem) { if (CGUIDialogContextMenu::OnContextButton("music", pItem, button)) { if (button == CONTEXT_BUTTON_REMOVE_SOURCE) OnRemoveSource(pItem); Update(""); return true; } } switch (button) { case CONTEXT_BUTTON_SCAN: OnScan(pItem); return true; case CONTEXT_BUTTON_RIP_TRACK: OnRipTrack(pItem); return true; case CONTEXT_BUTTON_RIP_CD: OnRipCD(); return true; case CONTEXT_BUTTON_CDDB: if (m_musicdatabase.LookupCDDBInfo(true)) Update(m_vecItems->GetPath()); return true; case CONTEXT_BUTTON_DELETE: OnDeleteItem(pItem); return true; case CONTEXT_BUTTON_RENAME: OnRenameItem(pItem); return true; case CONTEXT_BUTTON_SWITCH_MEDIA: CGUIDialogContextMenu::SwitchMedia("music", m_vecItems->GetPath()); return true; default: break; } return CGUIWindowJukeboxBase::OnContextButton(pItem, button); }
int RTPSources::DeleteOwnSSRC() { if (owndata == 0) return ERR_RTP_SOURCES_DONTHAVEOWNSSRC; uint32_t ssrc = owndata->GetSSRC(); sourcelist.GotoElement(ssrc); sourcelist.DeleteCurrentElement(); totalcount--; if (owndata->IsSender()) sendercount--; if (owndata->IsActive()) activecount--; OnRemoveSource(owndata); delete owndata; owndata = 0; return 0; }
void RTPSources::MultipleTimeouts(const RTPTime &curtime, const RTPTime &sendertimeout, const RTPTime &byetimeout, const RTPTime &generaltimeout, const RTPTime ¬etimeout) { int newtotalcount = 0; int newsendercount = 0; int newactivecount = 0; RTPTime senderchecktime = curtime; RTPTime byechecktime = curtime; RTPTime generaltchecktime = curtime; RTPTime notechecktime = curtime; senderchecktime -= sendertimeout; byechecktime -= byetimeout; generaltchecktime -= generaltimeout; notechecktime -= notetimeout; sourcelist.GotoFirstElement(); while (sourcelist.HasCurrentElement()) { RTPInternalSourceData *srcdat = sourcelist.GetCurrentElement(); bool deleted, issender, isactive; bool byetimeout, normaltimeout, notetimeout; std::size_t notelen; issender = srcdat->IsSender(); isactive = srcdat->IsActive(); deleted = false; byetimeout = false; normaltimeout = false; notetimeout = false; srcdat->SDES_GetNote(¬elen); if (notelen != 0) // Note has been set { RTPTime notetime = srcdat->INF_GetLastSDESNoteTime(); if (notechecktime > notetime) { notetimeout = true; srcdat->ClearNote(); } } if (srcdat->ReceivedBYE()) { RTPTime byetime = srcdat->GetBYETime(); if ((srcdat != owndata) && (byechecktime > byetime)) { sourcelist.DeleteCurrentElement(); deleted = true; byetimeout = true; } } if (!deleted) { RTPTime lastmsgtime = srcdat->INF_GetLastMessageTime(); if ((srcdat != owndata) && (lastmsgtime < generaltchecktime)) { sourcelist.DeleteCurrentElement(); deleted = true; normaltimeout = true; } } if (!deleted) { newtotalcount++; if (issender) { RTPTime lastrtppacktime = srcdat->INF_GetLastRTPPacketTime(); if (lastrtppacktime < senderchecktime) { srcdat->ClearSenderFlag(); sendercount--; } else newsendercount++; } if (isactive) newactivecount++; if (notetimeout) OnNoteTimeout(srcdat); sourcelist.GotoNextElement(); } else // deleted entry { if (issender) sendercount--; if (isactive) activecount--; totalcount--; if (byetimeout) OnBYETimeout(srcdat); if (normaltimeout) OnTimeout(srcdat); OnRemoveSource(srcdat); delete srcdat; } } totalcount = newtotalcount; // just to play it safe sendercount = newsendercount; activecount = newactivecount; }