From 4012c35cf4c6821b5fffb9806a564541e9088c84 Mon Sep 17 00:00:00 2001 From: Alexander Capehart Date: Sun, 29 Jan 2023 19:22:31 -0700 Subject: [PATCH] all: fix db memory leak Fix an issue where the database instances would leak memory due to an incorrect context use. --- .../java/org/oxycblt/auxio/music/extractor/CacheExtractor.kt | 4 +++- .../org/oxycblt/auxio/playback/persist/PersistenceDatabase.kt | 2 +- .../org/oxycblt/auxio/playback/state/PlaybackStateManager.kt | 2 ++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/oxycblt/auxio/music/extractor/CacheExtractor.kt b/app/src/main/java/org/oxycblt/auxio/music/extractor/CacheExtractor.kt index db6cfb87b..0fb055ba3 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/extractor/CacheExtractor.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/extractor/CacheExtractor.kt @@ -187,7 +187,9 @@ private abstract class CacheDatabase : RoomDatabase() { synchronized(this) { val newInstance = Room.databaseBuilder( - context, CacheDatabase::class.java, "auxio_metadata_cache.db") + context.applicationContext, + CacheDatabase::class.java, + "auxio_metadata_cache.db") .fallbackToDestructiveMigration() .fallbackToDestructiveMigrationFrom(0) .fallbackToDestructiveMigrationOnDowngrade() diff --git a/app/src/main/java/org/oxycblt/auxio/playback/persist/PersistenceDatabase.kt b/app/src/main/java/org/oxycblt/auxio/playback/persist/PersistenceDatabase.kt index cd335501a..d887d5f96 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/persist/PersistenceDatabase.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/persist/PersistenceDatabase.kt @@ -69,7 +69,7 @@ abstract class PersistenceDatabase : RoomDatabase() { synchronized(this) { val newInstance = Room.databaseBuilder( - context, + context.applicationContext, PersistenceDatabase::class.java, "auxio_playback_persistence.db") .fallbackToDestructiveMigration() diff --git a/app/src/main/java/org/oxycblt/auxio/playback/state/PlaybackStateManager.kt b/app/src/main/java/org/oxycblt/auxio/playback/state/PlaybackStateManager.kt index f9beb297d..454e2d7be 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/state/PlaybackStateManager.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/state/PlaybackStateManager.kt @@ -280,6 +280,7 @@ interface PlaybackStateManager { */ fun get(): PlaybackStateManager { val currentInstance = INSTANCE + logD(currentInstance) if (currentInstance != null) { return currentInstance @@ -553,6 +554,7 @@ private class RealPlaybackStateManager : PlaybackStateManager { // Internal player may have reloaded the media item, re-seek to the previous position seekTo(savedState.positionMs) } + isInitialized = true } // --- CALLBACKS ---