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

Commit 862cff82 authored by Dhavalkumar Chaudhary's avatar Dhavalkumar Chaudhary
Browse files

Replaced bacgroundi thread handler with local handler to void dead lock

Bug: 414540909

Test: atest PowerStatsTests

Flag: EXEMPT bugfix
Change-Id: Ibf58cdc92149ac50025c6f5f9c226f8220aa9132
parent f1d97412
Loading
Loading
Loading
Loading
+41 −47
Original line number Diff line number Diff line
@@ -112,7 +112,6 @@ import android.view.Display;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.os.BackgroundThread;
import com.android.internal.os.BatteryStatsHistory;
import com.android.internal.os.BatteryStatsHistoryIterator;
import com.android.internal.os.Clock;
@@ -11055,9 +11054,7 @@ public class BatteryStatsImpl extends BatteryStats {
                TypedXmlSerializer out = Xml.resolveSerializer(memStream);
                writeDailyItemsLocked(out);
                final long initialTimeMs = SystemClock.uptimeMillis() - startTimeMs;
                BackgroundThread.getHandler().post(new Runnable() {
                    @Override
                    public void run() {
                mHandler.post(() -> {
                    synchronized (mCheckinFile) {
                        final long startTimeMs2 = SystemClock.uptimeMillis();
                        FileOutputStream stream = null;
@@ -11074,7 +11071,6 @@ public class BatteryStatsImpl extends BatteryStats {
                            mDailyFile.failWrite(stream);
                        }
                    }
                    }
                });
            } catch (IOException e) {
            }
@@ -13545,8 +13541,7 @@ public class BatteryStatsImpl extends BatteryStats {
                    final Parcel parcel = Parcel.obtain();
                    writeSummaryToParcel(parcel, true);
                    final long initialTimeMs = SystemClock.uptimeMillis() - startTimeMs;
                    BackgroundThread.getHandler().post(new Runnable() {
                        @Override public void run() {
                    mHandler.post(() -> {
                        synchronized (mCheckinFile) {
                            final long startTimeMs2 = SystemClock.uptimeMillis();
                            FileOutputStream stream = null;
@@ -13567,7 +13562,6 @@ public class BatteryStatsImpl extends BatteryStats {
                                parcel.recycle();
                            }
                        }
                        }
                    });
                }
                doWrite = true;
@@ -14901,13 +14895,13 @@ public class BatteryStatsImpl extends BatteryStats {
    @GuardedBy("this")
    public void writeAsyncLocked() {
        BackgroundThread.getHandler().removeCallbacks(mWriteAsyncRunnable);
        BackgroundThread.getHandler().post(mWriteAsyncRunnable);
        mHandler.removeCallbacks(mWriteAsyncRunnable);
        mHandler.post(mWriteAsyncRunnable);
    }
    @GuardedBy("this")
    public void writeSyncLocked() {
        BackgroundThread.getHandler().removeCallbacks(mWriteAsyncRunnable);
        mHandler.removeCallbacks(mWriteAsyncRunnable);
        writeStatsLocked();
        writeHistoryLocked();
    }