protected override void OnError() { if (_tve3User != null && TvServerPlugin.TvController_IsRecording(ref _tve3User)) { StopMediaPortalRecording(_tve3User); } }
private bool EnsureCardFree(bool allowOtherArgusUser, ref string errorMessage, out bool argusIsRecordingOnCard) { argusIsRecordingOnCard = false; IUser[] cardUsers = TvServerPlugin.TvController_GetUsersForCard(_recordOnCard.IdCard); if (cardUsers != null) { TvDatabase.TuningDetail tuning = Utility.FindTuningDetailOnCard(_channel, _recordOnCard.IdCard); foreach (IUser cardUser in cardUsers) { if (!cardUser.Name.Equals("epg", StringComparison.InvariantCultureIgnoreCase)) { if (cardUser.Name.StartsWith("ArgusTV")) { if (!allowOtherArgusUser && !Utility.IsSameTransponder(_recordOnCard.IdCard, tuning, cardUser.IdChannel)) { // Seems another ARGUS TV user is using this card, but on a different // transponder! Normally this should never happen, but in rare conditions // we need to be able to handle this. errorMessage = "Card is in use by previous recording"; argusIsRecordingOnCard = true; return(false); } } else { IUser tmpUser = cardUser; if (TvServerPlugin.TvController_IsRecording(ref tmpUser)) { if (!TvServerPlugin.TvController_StopRecording(ref tmpUser)) { errorMessage = "Failed to stop recording on channel " + _channel.DisplayName; return(false); } } else if (TvServerPlugin.TvController_IsTimeShifting(ref tmpUser)) { if (!Utility.IsSameTransponder(_recordOnCard.IdCard, tuning, tmpUser.IdChannel)) { if (!TvServerPlugin.TvController_StopTimeShifting(ref tmpUser, TvStoppedReason.RecordingStarted)) { errorMessage = "Failed to stop timeshifting on channel " + _channel.DisplayName; return(false); } } } } } } } return(true); }