Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9d219168 authored by Michael Mikhail's avatar Michael Mikhail
Browse files

[Flexiglass] avoid memory usage increase due to media notification spam

This CL applies the media notification spam prevention technique on
flexiglass.
It also applies the changes for drawables reuse flag on MediaActions.
This gives the chance for the drawables reuse flag to be applied on
legacy code. We can also limit the flag to only flexiglass if needed.

Flag: com.android.systemui.media_controls_drawables_reuse
Flag: com.android.systemui.media_load_metadata_via_media_data_loader
Bug: 360324938
Bug: 358402034
Test: atest MediaDataProcessorTest
Change-Id: I1abd7cb5b03200d66d6c77698f75f66e23fcb46d
parent f29257fb
Loading
Loading
Loading
Loading
+9 −9
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@ import android.util.Log
import androidx.media.utils.MediaConstants
import com.android.systemui.media.controls.domain.pipeline.LegacyMediaDataManagerImpl.Companion.MAX_COMPACT_ACTIONS
import com.android.systemui.media.controls.domain.pipeline.LegacyMediaDataManagerImpl.Companion.MAX_NOTIFICATION_ACTIONS
import com.android.systemui.media.controls.shared.MediaControlDrawables
import com.android.systemui.media.controls.shared.model.MediaAction
import com.android.systemui.media.controls.shared.model.MediaButton
import com.android.systemui.plugins.ActivityStarter
@@ -58,14 +59,13 @@ fun createActionsFromState(
    val playOrPause =
        if (isConnectingState(state.state)) {
            // Spinner needs to be animating to render anything. Start it here.
            val drawable =
                context.getDrawable(com.android.internal.R.drawable.progress_small_material)
            val drawable = MediaControlDrawables.getProgress(context)
            (drawable as Animatable).start()
            MediaAction(
                drawable,
                null, // no action to perform when clicked
                context.getString(R.string.controls_media_button_connecting),
                context.getDrawable(R.drawable.ic_media_connecting_container),
                MediaControlDrawables.getConnecting(context),
                // Specify a rebind id to prevent the spinner from restarting on later binds.
                com.android.internal.R.drawable.progress_small_material
            )
@@ -153,23 +153,23 @@ private fun getStandardAction(
    return when (action) {
        PlaybackState.ACTION_PLAY -> {
            MediaAction(
                context.getDrawable(R.drawable.ic_media_play),
                MediaControlDrawables.getPlayIcon(context),
                { controller.transportControls.play() },
                context.getString(R.string.controls_media_button_play),
                context.getDrawable(R.drawable.ic_media_play_container)
                MediaControlDrawables.getPlayBackground(context)
            )
        }
        PlaybackState.ACTION_PAUSE -> {
            MediaAction(
                context.getDrawable(R.drawable.ic_media_pause),
                MediaControlDrawables.getPauseIcon(context),
                { controller.transportControls.pause() },
                context.getString(R.string.controls_media_button_pause),
                context.getDrawable(R.drawable.ic_media_pause_container)
                MediaControlDrawables.getPauseBackground(context)
            )
        }
        PlaybackState.ACTION_SKIP_TO_PREVIOUS -> {
            MediaAction(
                context.getDrawable(R.drawable.ic_media_prev),
                MediaControlDrawables.getPrevIcon(context),
                { controller.transportControls.skipToPrevious() },
                context.getString(R.string.controls_media_button_prev),
                null
@@ -177,7 +177,7 @@ private fun getStandardAction(
        }
        PlaybackState.ACTION_SKIP_TO_NEXT -> {
            MediaAction(
                context.getDrawable(R.drawable.ic_media_next),
                MediaControlDrawables.getNextIcon(context),
                { controller.transportControls.skipToNext() },
                context.getString(R.string.controls_media_button_next),
                null
+191 −270

File changed.

Preview size limit exceeded, changes collapsed.

+200 −187

File changed.

Preview size limit exceeded, changes collapsed.

+2 −2
Original line number Diff line number Diff line
@@ -18,7 +18,6 @@ package com.android.systemui.media.controls.domain.pipeline

import android.app.smartspace.SmartspaceManager
import android.content.applicationContext
import android.os.fakeExecutorHandler
import com.android.keyguard.keyguardUpdateMonitor
import com.android.systemui.broadcast.broadcastDispatcher
import com.android.systemui.concurrency.fakeExecutor
@@ -45,7 +44,7 @@ val Kosmos.mediaDataProcessor by
            backgroundExecutor = fakeExecutor,
            uiExecutor = fakeExecutor,
            foregroundExecutor = fakeExecutor,
            handler = fakeExecutorHandler,
            mainDispatcher = testDispatcher,
            mediaControllerFactory = fakeMediaControllerFactory,
            broadcastDispatcher = broadcastDispatcher,
            dumpManager = dumpManager,
@@ -60,5 +59,6 @@ val Kosmos.mediaDataProcessor by
            smartspaceManager = SmartspaceManager(applicationContext),
            keyguardUpdateMonitor = keyguardUpdateMonitor,
            mediaDataRepository = mediaDataRepository,
            mediaDataLoader = { mediaDataLoader },
        )
    }