From: aman.jeph Date: Fri, 22 Apr 2022 11:52:29 +0000 (+0530) Subject: Fixing dispose crash issue of PlaylistSelectorView. X-Git-Tag: submit/tizen/20220509.153423~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F79%2F274179%2F1;p=profile%2Fiot%2Fapps%2Fdotnet%2Fmusic-player.git Fixing dispose crash issue of PlaylistSelectorView. Change-Id: Ieced62d5b767c8658c98194db8afae21be238ca2 Signed-off-by: aman.jeph --- diff --git a/music-player/Views/PlaylistSelectorView.cs b/music-player/Views/PlaylistSelectorView.cs index d0d0bda..f4a9fbd 100755 --- a/music-player/Views/PlaylistSelectorView.cs +++ b/music-player/Views/PlaylistSelectorView.cs @@ -21,6 +21,9 @@ namespace MusicPlayer.Views class PlaylistSelectorView : View { + + private const int DisposeTimerInterval = 100; + private View selectPlaylistContentArea; private View createPlaylistContentArea; private View inputArea; @@ -38,6 +41,7 @@ namespace MusicPlayer.Views private TextField textField; private Button crossButton; private readonly PlaylistSelectorViewModel viewModel; + private Timer disposeTimer; public event EventHandler PlaylistMemberAdd; @@ -65,6 +69,8 @@ namespace MusicPlayer.Views }; Window.Instance.Add(selectPlaylistDialog); selectPlaylistDialog.BackKeyPressed += OnBackKeyPressed; + disposeTimer = new Timer(DisposeTimerInterval); + disposeTimer.Tick += OnTimerTick; } private TextLabel CreateAlertDialogTitle(string titleText) @@ -90,6 +96,14 @@ namespace MusicPlayer.Views OnBackKey(); } + private bool OnTimerTick(object source, Timer.TickEventArgs e) + { + //This should be the last statement anything done should be before this statement. + Tizen.Log.Debug(AppConstants.LogTag, "Deleting the Playlist selector view"); + DeleteSelectorView(); + return false; + } + private void AddSelectPlaylistContentArea() { selectPlaylistContentArea = new View() @@ -232,17 +246,32 @@ namespace MusicPlayer.Views collectionView.SelectedItem = null; return; } - else + else if(status == PlaylistMemberAddStatus.PlaylistCreationFailed) { - Tizen.Log.Error(AppConstants.LogTag, "Failed to add track to playlist"); + ShowInfoMessage("Failed to create playlist"); + collectionView.SelectedItem = null; + return; } - if(createPlaylistDialog != null && createPlaylistDialog.IsOnWindow) + else if (status == PlaylistMemberAddStatus.Failed) + { + ShowInfoMessage("Failed to add member to playlist"); + collectionView.SelectedItem = null; + return; + } + else if(status == PlaylistMemberAddStatus.Added) + { + Tizen.Log.Debug(AppConstants.LogTag, "Tracks are added to playlist"); + } + + if (createPlaylistDialog != null && createPlaylistDialog.IsOnWindow) { RemoveTheCreatePopup(); } PlaylistMemberAdd?.Invoke(this, new PlaylistMemberAddEventArgs(PlaylistMemberAddStatus.Added)); RemoveTheSelectPopup(); - DeleteSelectorView(); + + // Starting the dispose timer as we can't delete the collection view in the current callback + disposeTimer.Start(); } private void AddNoListText() @@ -565,6 +594,10 @@ namespace MusicPlayer.Views selectPlaylistDialog?.Dispose(); selectPlaylistDialog = null; selectPlaylistContentArea = null; + + // This should be deleted last; + disposeTimer.Dispose(); + disposeTimer = null; } base.Dispose(type); diff --git a/music-player/music-player.csproj b/music-player/music-player.csproj index e2eacec..f655062 100755 --- a/music-player/music-player.csproj +++ b/music-player/music-player.csproj @@ -19,7 +19,7 @@ - + diff --git a/packaging/org.tizen.MusicPlayer-1.0.0.tpk b/packaging/org.tizen.MusicPlayer-1.0.0.tpk index d3806a7..b5b20fc 100755 Binary files a/packaging/org.tizen.MusicPlayer-1.0.0.tpk and b/packaging/org.tizen.MusicPlayer-1.0.0.tpk differ