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

Commit 8c26c4f2 authored by Jason Chiu's avatar Jason Chiu Committed by Automerger Merge Worker
Browse files

Merge "Fix the ANR in panel when changing volume continuously" into rvc-qpr-dev am: c3ed62e3

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/12652533

Change-Id: I72df2a31695885198f89d1406d31f6e434a827c1
parents c0468c48 c3ed62e3
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -3258,6 +3258,11 @@
            android:permission="android.permission.MANAGE_SLICE_PERMISSIONS"
            android:exported="true" />

        <receiver
            android:name=".slices.VolumeSliceRelayReceiver"
            android:permission="android.permission.MANAGE_SLICE_PERMISSIONS"
            android:exported="true" />

        <!-- Couldn't be triggered from outside of settings. Statsd can trigger it because we send
             PendingIntent to it-->
        <receiver android:name=".fuelgauge.batterytip.AnomalyDetectionReceiver"
+1 −0
Original line number Diff line number Diff line
@@ -64,6 +64,7 @@ public abstract class AdjustVolumeRestrictedPreferenceController extends
        filter.addAction(AudioManager.VOLUME_CHANGED_ACTION);
        filter.addAction(AudioManager.STREAM_MUTE_CHANGED_ACTION);
        filter.addAction(AudioManager.MASTER_MUTE_CHANGED_ACTION);
        filter.addAction(AudioManager.STREAM_DEVICES_CHANGED_ACTION);
        return filter;
    }
}
+4 −1
Original line number Diff line number Diff line
@@ -107,7 +107,10 @@ public abstract class VolumeSeekBarPreferenceController extends
        return mHelper.getMinVolume(getAudioStream());
    }

    protected abstract int getAudioStream();
    /**
     * @return the audio stream type
     */
    public abstract int getAudioStream();

    protected abstract int getMuteIcon();

+10 −0
Original line number Diff line number Diff line
@@ -216,6 +216,16 @@ public class CustomSliceRegistry {
            .appendPath("ring_volume")
            .build();

    /**
     * Full {@link Uri} for the all volume Slices.
     */
    public static final Uri VOLUME_SLICES_URI = new Uri.Builder()
            .scheme(ContentResolver.SCHEME_CONTENT)
            .authority(SettingsSliceProvider.SLICE_AUTHORITY)
            .appendPath(SettingsSlicesContract.PATH_SETTING_ACTION)
            .appendPath("volume_slices")
            .build();

    /**
     * Full {@link Uri} for the Wifi Calling Slice.
     */
+12 −2
Original line number Diff line number Diff line
@@ -47,6 +47,7 @@ import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.bluetooth.BluetoothSliceBuilder;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.notification.VolumeSeekBarPreferenceController;
import com.android.settings.notification.zen.ZenModeSliceBuilder;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.SliceBroadcastRelay;
@@ -184,7 +185,10 @@ public class SettingsSliceProvider extends SliceProvider {

    @Override
    public void onSliceUnpinned(Uri sliceUri) {
        SliceBroadcastRelay.unregisterReceivers(getContext(), sliceUri);
        final Context context = getContext();
        if (!VolumeSliceHelper.unregisterUri(context, sliceUri)) {
            SliceBroadcastRelay.unregisterReceivers(context, sliceUri);
        }
        ThreadUtils.postOnMainThread(() -> stopBackgroundWorker(sliceUri));
    }

@@ -390,8 +394,14 @@ public class SettingsSliceProvider extends SliceProvider {

        final IntentFilter filter = controller.getIntentFilter();
        if (filter != null) {
            if (controller instanceof VolumeSeekBarPreferenceController) {
                // Register volume slices to a broadcast relay to reduce unnecessary UI updates
                VolumeSliceHelper.registerIntentToUri(getContext(), filter, uri,
                        ((VolumeSeekBarPreferenceController) controller).getAudioStream());
            } else {
                registerIntentToUri(filter, uri);
            }
        }

        ThreadUtils.postOnMainThread(() -> startBackgroundWorker(controller, uri));

Loading