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

Commit 4908755f authored by Roman Birg's avatar Roman Birg Committed by Clark Scheff
Browse files

SystemUI: don't recreate zen controller, handler thread



- don't create extra handler threads
- don't create extra zen mode controllers

Ref: CYNGNOS-1041

Change-Id: If62e2e7fea77f519fb2a994474c64df175e08e96
Signed-off-by: default avatarRoman Birg <roman@cyngn.com>
parent d427e029
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -1092,9 +1092,11 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
        // set the inital view visibility
        setAreThereNotifications();

        if (mHandlerThread == null) {
            // Background thread for any controllers that need it.
            mHandlerThread = new HandlerThread(TAG, Process.THREAD_PRIORITY_BACKGROUND);
            mHandlerThread.start();
        }

        // Other icons
        if (mLocationController == null) {
+14 −15
Original line number Diff line number Diff line
@@ -39,6 +39,7 @@ import android.service.notification.ZenModeConfig;
import android.util.Log;
import android.util.Slog;

import com.android.systemui.cm.UserContentObserver;
import com.android.systemui.qs.GlobalSetting;

import java.util.ArrayList;
@@ -82,7 +83,7 @@ public class ZenModeControllerImpl implements ZenModeController {
                ServiceManager.getService(Context.NOTIFICATION_SERVICE));
        mAlarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
        mSetupObserver = new SetupObserver(handler);
        mSetupObserver.register();
        mSetupObserver.observe();
    }

    @Override
@@ -161,7 +162,6 @@ public class ZenModeControllerImpl implements ZenModeController {
        filter.addAction(NotificationManager.ACTION_EFFECTS_SUPPRESSOR_CHANGED);
        mContext.registerReceiverAsUser(mReceiver, new UserHandle(mUserId), filter, null, null);
        mRegistered = true;
        mSetupObserver.register();
    }

    @Override
@@ -239,16 +239,19 @@ public class ZenModeControllerImpl implements ZenModeController {
        }
    };

    private final class SetupObserver extends ContentObserver {
    private final class SetupObserver extends UserContentObserver {
        private final ContentResolver mResolver;

        private boolean mRegistered;

        public SetupObserver(Handler handler) {
            super(handler);
            mResolver = mContext.getContentResolver();
        }

        @Override
        protected void update() {
            fireZenAvailableChanged(isZenAvailable());
        }

        public boolean isUserSetup() {
            return Secure.getIntForUser(mResolver, Secure.USER_SETUP_COMPLETE, 0, mUserId) != 0;
        }
@@ -257,23 +260,19 @@ public class ZenModeControllerImpl implements ZenModeController {
            return Global.getInt(mResolver, Global.DEVICE_PROVISIONED, 0) != 0;
        }

        public void register() {
            if (mRegistered) {
                mResolver.unregisterContentObserver(this);
            }
        @Override
        protected void observe() {
            super.observe();
            mResolver.registerContentObserver(
                    Global.getUriFor(Global.DEVICE_PROVISIONED), false, this);
            mResolver.registerContentObserver(
                    Secure.getUriFor(Secure.USER_SETUP_COMPLETE), false, this, mUserId);
            fireZenAvailableChanged(isZenAvailable());
        }

        @Override
        public void onChange(boolean selfChange, Uri uri) {
            if (Global.getUriFor(Global.DEVICE_PROVISIONED).equals(uri)
                    || Secure.getUriFor(Secure.USER_SETUP_COMPLETE).equals(uri)) {
                fireZenAvailableChanged(isZenAvailable());
            }
        protected void unobserve() {
            super.unobserve();
            mResolver.unregisterContentObserver(this);
        }
    }
}
+26 −20
Original line number Diff line number Diff line
@@ -63,6 +63,7 @@ public class VolumeUI extends SystemUI {
    private int mDismissDelay;

    private Configuration mConfiguration;
    private ZenModeControllerImpl mZenModeController;

    @Override
    public void start() {
@@ -124,8 +125,12 @@ public class VolumeUI extends SystemUI {
    }

    private void initPanel() {
        if (mZenModeController == null) {
            mZenModeController = new ZenModeControllerImpl(mContext, mHandler);
        }
        mDismissDelay = mContext.getResources().getInteger(R.integer.volume_panel_dismiss_delay);
        mPanel = new VolumePanel(mContext, new ZenModeControllerImpl(mContext, mHandler));
        if (mPanel == null) {
            mPanel = new VolumePanel(mContext, mZenModeController);
            mPanel.setCallback(new VolumePanel.Callback() {
                @Override
                public void onZenSettings() {
@@ -148,6 +153,7 @@ public class VolumeUI extends SystemUI {
                    }
                }
            });
        }
        mDialogPanel = mPanel;
    }

@@ -205,7 +211,7 @@ public class VolumeUI extends SystemUI {

        @Override
        public ZenModeController getZenController() {
            return mDialogPanel.getZenController();
            return mZenModeController;
        }

        @Override