Skip to content

Commit eae5e90

Browse files
committed
Refactor CustomIconProvider and LauncherModel to improve state management and task execution
Signed-off-by: Saul Henriquez <saul_henriquez@hotmail.com>
1 parent 964c496 commit eae5e90

File tree

2 files changed

+26
-4
lines changed

2 files changed

+26
-4
lines changed

Omega/src/com/neoapps/neolauncher/icons/CustomIconProvider.kt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ class CustomIconProvider @JvmOverloads @Inject constructor(
5151

5252
private val prefs = NeoPrefs.getInstance()
5353
private val iconPackPref = prefs.profileIconPack
54-
private val drawerThemedIcons = prefs.profileThemedIcons.getValue()
54+
private val drawerThemedIcons get() = prefs.profileThemedIcons.getValue()
5555
private var isOlderLawnIconsInstalled =
5656
context.packageManager.getPackageVersionCode(LAWNICONS_PACKAGE_NAME) in 1..3
5757
private val iconPackProvider = IconPackProvider.INSTANCE.get(context)
@@ -177,6 +177,11 @@ class CustomIconProvider @JvmOverloads @Inject constructor(
177177
mThemedIconMap = if (isSupported && isOlderLawnIconsInstalled) null else DISABLED_MAP
178178
}
179179

180+
override fun updateSystemState() {
181+
super.updateSystemState()
182+
mSystemState += ",${iconPackPref.getValue()},$drawerThemedIcons"
183+
}
184+
180185
override fun getIcon(info: ComponentInfo?): Drawable {
181186
return CustomAdaptiveIconDrawable.wrapNonNull(super.getIcon(info))
182187
}

src/com/android/launcher3/LauncherModel.kt

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ constructor(
7979
) : LauncherDumpable {
8080

8181
private val mCallbacksList = ArrayList<BgDataModel.Callbacks>(1)
82+
private val mPendingTasks = ArrayList<ModelUpdateTask>()
8283

8384
private val mLock = Any()
8485

@@ -190,6 +191,9 @@ constructor(
190191
stopLoader()
191192
mModelLoaded = false
192193
}
194+
MODEL_EXECUTOR.execute {
195+
taskControllerProvider.get().iconCache.clearMemoryCache()
196+
}
193197
rebindCallbacks()
194198
}
195199

@@ -333,9 +337,19 @@ constructor(
333337
}
334338

335339
fun commit() {
340+
val pendingTasks: List<ModelUpdateTask>
336341
synchronized(mLock) {
337342
// Everything loaded bind the data.
338343
mModelLoaded = true
344+
pendingTasks = ArrayList(mPendingTasks)
345+
mPendingTasks.clear()
346+
}
347+
if (pendingTasks.isNotEmpty()) {
348+
MODEL_EXECUTOR.execute {
349+
for (task in pendingTasks) {
350+
task.execute(taskControllerProvider.get(), mBgDataModel, mBgAllAppsList)
351+
}
352+
}
339353
}
340354
if (Flags.simplifiedLauncherModelBinding())
341355
installQueue.resumeModelPush(ItemInstallQueue.FLAG_LOADER_RUNNING)
@@ -387,9 +401,12 @@ constructor(
387401
return
388402
}
389403
MODEL_EXECUTOR.execute {
390-
if (!isModelLoaded()) {
391-
// Loader has not yet run.
392-
return@execute
404+
synchronized(mLock) {
405+
if (!mModelLoaded) {
406+
// Loader has not yet run.
407+
mPendingTasks.add(task)
408+
return@execute
409+
}
393410
}
394411
task.execute(taskControllerProvider.get(), mBgDataModel, mBgAllAppsList)
395412
}

0 commit comments

Comments
 (0)