From cb5be66e01597ef2ea79093fdb1e508f8e8816b2 Mon Sep 17 00:00:00 2001 From: MM20 <15646950+MM2-0@users.noreply.github.com> Date: Mon, 16 May 2022 22:25:55 +0200 Subject: [PATCH] Prevent some unnecessary recompositions --- .../launcher2/ui/launcher/PagerScaffold.kt | 18 ++---------- .../launcher2/ui/launcher/PullDownScaffold.kt | 15 ++-------- .../ui/launcher/helper/WallpaperBlur.kt | 29 +++++++++++++++++++ 3 files changed, 35 insertions(+), 27 deletions(-) create mode 100644 ui/src/main/java/de/mm20/launcher2/ui/launcher/helper/WallpaperBlur.kt diff --git a/ui/src/main/java/de/mm20/launcher2/ui/launcher/PagerScaffold.kt b/ui/src/main/java/de/mm20/launcher2/ui/launcher/PagerScaffold.kt index 207d5195..3a4f2bd6 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/launcher/PagerScaffold.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/launcher/PagerScaffold.kt @@ -36,6 +36,7 @@ import com.google.accompanist.systemuicontroller.rememberSystemUiController import de.mm20.launcher2.ktx.isAtLeastApiLevel import de.mm20.launcher2.ui.R import de.mm20.launcher2.ui.ktx.toPixels +import de.mm20.launcher2.ui.launcher.helper.WallpaperBlur import de.mm20.launcher2.ui.launcher.search.SearchBar import de.mm20.launcher2.ui.launcher.search.SearchBarLevel import de.mm20.launcher2.ui.launcher.search.SearchColumn @@ -102,21 +103,8 @@ fun PagerScaffold( } } - val density = LocalDensity.current - - - - LaunchedEffect(blurWallpaper) { - if (!isAtLeastApiLevel(31)) return@LaunchedEffect - (context as Activity).window.attributes = context.window.attributes.also { - if (blurWallpaper) { - it.blurBehindRadius = with(density) { 32.dp.toPx().toInt() } - it.flags = it.flags or WindowManager.LayoutParams.FLAG_BLUR_BEHIND - } else { - it.blurBehindRadius = 0 - it.flags = it.flags and WindowManager.LayoutParams.FLAG_BLUR_BEHIND.inv() - } - } + WallpaperBlur { + blurWallpaper } val currentPage = swipeableState.currentValue diff --git a/ui/src/main/java/de/mm20/launcher2/ui/launcher/PullDownScaffold.kt b/ui/src/main/java/de/mm20/launcher2/ui/launcher/PullDownScaffold.kt index c55719e1..52c8ca39 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/launcher/PullDownScaffold.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/launcher/PullDownScaffold.kt @@ -42,6 +42,7 @@ import com.google.accompanist.systemuicontroller.rememberSystemUiController import de.mm20.launcher2.ktx.isAtLeastApiLevel import de.mm20.launcher2.ui.R import de.mm20.launcher2.ui.ktx.animateTo +import de.mm20.launcher2.ui.launcher.helper.WallpaperBlur import de.mm20.launcher2.ui.launcher.search.SearchBar import de.mm20.launcher2.ui.launcher.search.SearchBarLevel import de.mm20.launcher2.ui.launcher.search.SearchColumn @@ -109,18 +110,8 @@ fun PullDownScaffold( } } - - LaunchedEffect(blurWallpaper) { - if (!isAtLeastApiLevel(31)) return@LaunchedEffect - (context as Activity).window.attributes = context.window.attributes.also { - if (blurWallpaper) { - it.blurBehindRadius = with(density) { 32.dp.toPx().toInt() } - it.flags = it.flags or WindowManager.LayoutParams.FLAG_BLUR_BEHIND - } else { - it.blurBehindRadius = 0 - it.flags = it.flags and WindowManager.LayoutParams.FLAG_BLUR_BEHIND.inv() - } - } + WallpaperBlur { + blurWallpaper } diff --git a/ui/src/main/java/de/mm20/launcher2/ui/launcher/helper/WallpaperBlur.kt b/ui/src/main/java/de/mm20/launcher2/ui/launcher/helper/WallpaperBlur.kt new file mode 100644 index 00000000..0a736eb2 --- /dev/null +++ b/ui/src/main/java/de/mm20/launcher2/ui/launcher/helper/WallpaperBlur.kt @@ -0,0 +1,29 @@ +package de.mm20.launcher2.ui.launcher.helper + +import android.app.Activity +import android.view.WindowManager +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.platform.LocalDensity +import androidx.compose.ui.unit.dp +import de.mm20.launcher2.ktx.isAtLeastApiLevel + +@Composable +fun WallpaperBlur(blur: () -> Boolean) { + val context = LocalContext.current + val density = LocalDensity.current + val blurWallpaper = blur() + LaunchedEffect(blurWallpaper) { + if (!isAtLeastApiLevel(31)) return@LaunchedEffect + (context as Activity).window.attributes = context.window.attributes.also { + if (blurWallpaper) { + it.blurBehindRadius = with(density) { 32.dp.toPx().toInt() } + it.flags = it.flags or WindowManager.LayoutParams.FLAG_BLUR_BEHIND + } else { + it.blurBehindRadius = 0 + it.flags = it.flags and WindowManager.LayoutParams.FLAG_BLUR_BEHIND.inv() + } + } + } +} \ No newline at end of file