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

Commit 833db408 authored by Chung-yih Wang's avatar Chung-yih Wang Committed by Android Git Automerger
Browse files

am dc2e5208: Merge "Do not release the wifi lock if the screen is off." into gingerbread

Merge commit 'dc2e5208' into gingerbread-plus-aosp

* commit 'dc2e5208':
  Do not release the wifi lock if the screen is off.
parents 4c2c62fe dc2e5208
Loading
Loading
Loading
Loading
+21 −1
Original line number Diff line number Diff line
@@ -92,6 +92,7 @@ public final class SipService extends ISipService.Stub {
            new HashMap<String, ISipSession>();

    private ConnectivityReceiver mConnectivityReceiver;
    private boolean mScreenOn;

    /**
     * Starts the SIP service. Do nothing if the SIP API is not supported on the
@@ -111,11 +112,27 @@ public final class SipService extends ISipService.Stub {
        mConnectivityReceiver = new ConnectivityReceiver();
        context.registerReceiver(mConnectivityReceiver,
                new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
        context.registerReceiver(mScreenOnOffReceiver,
                new IntentFilter(Intent.ACTION_SCREEN_ON));
        context.registerReceiver(mScreenOnOffReceiver,
                new IntentFilter(Intent.ACTION_SCREEN_OFF));

        mTimer = new WakeupTimer(context);
        mWifiOnly = SipManager.isSipWifiOnly(context);
    }

    BroadcastReceiver mScreenOnOffReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();
            if (Intent.ACTION_SCREEN_OFF.equals(action)) {
                mScreenOn = true;
            } else if (Intent.ACTION_SCREEN_ON.equals(action)) {
                mScreenOn = false;
            }
        }
    };

    private MyExecutor getExecutor() {
        // create mExecutor lazily
        if (mExecutor == null) mExecutor = new MyExecutor();
@@ -366,7 +383,10 @@ public final class SipService extends ISipService.Stub {
        boolean wifiOff = (isWifi && !connected) || (wasWifi && !sameType);
        boolean wifiOn = isWifi && connected;
        if (wifiOff) {
            releaseWifiLock();
            if (mScreenOn) releaseWifiLock();
            // If the screen is off, we still keep the wifi lock in order
            // to be able to reassociate with any available AP. Otherwise,
            // the wifi driver could be stopped after 15 mins of idle time.
        } else if (wifiOn) {
            if (anyOpened()) grabWifiLock();
        }