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

Commit 444724c8 authored by Android Build Merger (Role)'s avatar Android Build Merger (Role) Committed by Android (Google) Code Review
Browse files

Merge "Merge "Fix Wakelock underlock in GnssLocationProvider." into oc-dev am:...

Merge "Merge "Fix Wakelock underlock in GnssLocationProvider." into oc-dev am: 34ab1f6a" into oc-dev-plus-aosp
parents 1dfaae9f eba85c1b
Loading
Loading
Loading
Loading
+18 −7
Original line number Diff line number Diff line
@@ -382,6 +382,8 @@ public class GnssLocationProvider implements LocationProviderInterface {
    // Wakelocks
    private final static String WAKELOCK_KEY = "GnssLocationProvider";
    private final PowerManager.WakeLock mWakeLock;
    private static final String DOWNLOAD_EXTRA_WAKELOCK_KEY = "GnssLocationProviderXtraDownload";
    private final PowerManager.WakeLock mDownloadXtraWakeLock;

    // Alarms
    private final static String ALARM_WAKEUP = "com.android.internal.location.ALARM_WAKEUP";
@@ -686,6 +688,11 @@ public class GnssLocationProvider implements LocationProviderInterface {
        mWakeLock = mPowerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, WAKELOCK_KEY);
        mWakeLock.setReferenceCounted(true);

        // Create a separate wake lock for xtra downloader as it may be released due to timeout.
        mDownloadXtraWakeLock = mPowerManager.newWakeLock(
                PowerManager.PARTIAL_WAKE_LOCK, DOWNLOAD_EXTRA_WAKELOCK_KEY);
        mDownloadXtraWakeLock.setReferenceCounted(true);

        mAlarmManager = (AlarmManager)mContext.getSystemService(Context.ALARM_SERVICE);
        mWakeupIntent = PendingIntent.getBroadcast(mContext, 0, new Intent(ALARM_WAKEUP), 0);
        mTimeoutIntent = PendingIntent.getBroadcast(mContext, 0, new Intent(ALARM_TIMEOUT), 0);
@@ -989,7 +996,7 @@ public class GnssLocationProvider implements LocationProviderInterface {
        mDownloadXtraDataPending = STATE_DOWNLOADING;

        // hold wake lock while task runs
        mWakeLock.acquire(DOWNLOAD_XTRA_DATA_TIMEOUT_MS);
        mDownloadXtraWakeLock.acquire(DOWNLOAD_XTRA_DATA_TIMEOUT_MS);
        Log.i(TAG, "WakeLock acquired by handleDownloadXtraData()");
        AsyncTask.THREAD_POOL_EXECUTOR.execute(new Runnable() {
            @Override
@@ -1011,13 +1018,17 @@ public class GnssLocationProvider implements LocationProviderInterface {
                            mXtraBackOff.nextBackoffMillis());
                }

                // release wake lock held by task
                if (mWakeLock.isHeld()) {
                    mWakeLock.release();
                // Release wake lock held by task, synchronize on mLock in case multiple
                // download tasks overrun.
                synchronized (mLock) {
                    if (mDownloadXtraWakeLock.isHeld()) {
                        mDownloadXtraWakeLock.release();
                        if (DEBUG) Log.d(TAG, "WakeLock released by handleDownloadXtraData()");
                    } else {
                    Log.e(TAG, "WakeLock expired before release in handleDownloadXtraData()");
                        Log.e(TAG, "WakeLock expired before release in "
                                + "handleDownloadXtraData()");
                    }
                }
                Log.i(TAG, "WakeLock released by handleDownloadXtraData()");
            }
        });
    }