Fixing dispose crash issue of PlaylistSelectorView. 79/274179/1
authoraman.jeph <aman.jeph@samsung.com>
Fri, 22 Apr 2022 11:52:29 +0000 (17:22 +0530)
committeraman.jeph <aman.jeph@samsung.com>
Fri, 22 Apr 2022 11:52:29 +0000 (17:22 +0530)
Change-Id: Ieced62d5b767c8658c98194db8afae21be238ca2
Signed-off-by: aman.jeph <aman.jeph@samsung.com>
music-player/Views/PlaylistSelectorView.cs
music-player/music-player.csproj
packaging/org.tizen.MusicPlayer-1.0.0.tpk

index d0d0bda5408a75c5479a637b6a16b64b8ce3533c..f4a9fbdb9dc238d876e85e6001cdbf59b2309e6a 100755 (executable)
@@ -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<PlaylistMemberAddEventArgs> 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);
index e2eacec9179a8e0457b09ad43474b86a2f2591b9..f655062ddccf1651152d062c2a199455ee9e212c 100755 (executable)
@@ -19,7 +19,7 @@
   </ItemGroup>\r
 \r
   <ItemGroup>\r
-    <PackageReference Include="Tizen.NET" Version="10.0.0.17064" />\r
+    <PackageReference Include="Tizen.NET" Version="10.0.0.17133" />\r
     <PackageReference Include="Tizen.NET.Sdk" Version="1.1.7" />\r
   </ItemGroup>\r
 \r
index d3806a7d2c415398f19c184cf0739458fe552aed..b5b20fc85e733dcad86f056984fb614a6589f3eb 100755 (executable)
Binary files a/packaging/org.tizen.MusicPlayer-1.0.0.tpk and b/packaging/org.tizen.MusicPlayer-1.0.0.tpk differ