resolved conflicts for merge of 485d7a31 to master

Change-Id: I058e19af8732df44457bdc614ee810a642dc25e4
This commit is contained in:
Kenny Root
2013-05-07 09:47:34 -07:00
6 changed files with 87 additions and 2 deletions

View File

@@ -16,6 +16,9 @@
package com.android.server;
import android.app.IActivityController;
import android.os.Binder;
import android.os.RemoteException;
import com.android.server.am.ActivityManagerService;
import com.android.server.power.PowerManagerService;
@@ -89,6 +92,7 @@ public class Watchdog extends Thread {
ActivityManagerService mActivity;
int mPhonePid;
IActivityController mController;
final Calendar mCalendar = Calendar.getInstance();
int mMinScreenOff = MEMCHECK_DEFAULT_MIN_SCREEN_OFF;
@@ -260,6 +264,12 @@ public class Watchdog extends Thread {
}
}
public void setActivityController(IActivityController controller) {
synchronized (this) {
mController = controller;
}
}
public void addMonitor(Monitor monitor) {
synchronized (this) {
if (isAlive()) {
@@ -549,6 +559,25 @@ public class Watchdog extends Thread {
dropboxThread.join(2000); // wait up to 2 seconds for it to return.
} catch (InterruptedException ignored) {}
IActivityController controller;
synchronized (this) {
controller = mController;
}
if (controller != null) {
Slog.i(TAG, "Reporting stuck state to activity controller");
try {
Binder.setDumpDisabled("Service dumps disabled due to hung system process.");
// 1 = keep waiting, -1 = kill system
int res = controller.systemNotResponding(name);
if (res >= 0) {
Slog.i(TAG, "Activity controller requested to coninue to wait");
waitedHalf = false;
continue;
}
} catch (RemoteException e) {
}
}
// Only kill the process if the debugger is not attached.
if (!Debug.isDebuggerConnected()) {
Slog.w(TAG, "*** WATCHDOG KILLING SYSTEM PROCESS: " + name);

View File

@@ -2920,6 +2920,7 @@ public final class ActivityManagerService extends ActivityManagerNative
resumeOK = mController.activityResuming(next.packageName);
} catch (RemoteException e) {
mController = null;
Watchdog.getInstance().setActivityController(null);
}
if (!resumeOK) {
@@ -3413,6 +3414,7 @@ public final class ActivityManagerService extends ActivityManagerNative
if (res < 0 && app.pid != MY_PID) Process.killProcess(app.pid);
} catch (RemoteException e) {
mController = null;
Watchdog.getInstance().setActivityController(null);
}
}
@@ -3516,6 +3518,7 @@ public final class ActivityManagerService extends ActivityManagerNative
}
} catch (RemoteException e) {
mController = null;
Watchdog.getInstance().setActivityController(null);
}
}
@@ -7569,6 +7572,7 @@ public final class ActivityManagerService extends ActivityManagerNative
"setActivityController()");
synchronized (this) {
mController = controller;
Watchdog.getInstance().setActivityController(controller);
}
}
@@ -8932,6 +8936,7 @@ public final class ActivityManagerService extends ActivityManagerNative
}
} catch (RemoteException e) {
mController = null;
Watchdog.getInstance().setActivityController(null);
}
}

View File

@@ -20,6 +20,7 @@ import static com.android.server.am.ActivityStackSupervisor.HOME_STACK_ID;
import com.android.internal.os.BatteryStatsImpl;
import com.android.internal.util.Objects;
import com.android.server.Watchdog;
import com.android.server.am.ActivityManagerService.ItemMatcher;
import com.android.server.wm.AppTransition;
import com.android.server.wm.TaskGroup;
@@ -2498,6 +2499,7 @@ final class ActivityStack {
resumeOK = controller.activityResuming(next.packageName);
} catch (RemoteException e) {
mService.mController = null;
Watchdog.getInstance().setActivityController(null);
}
if (!resumeOK) {
@@ -3022,6 +3024,7 @@ final class ActivityStack {
moveOK = mService.mController.activityResuming(next.packageName);
} catch (RemoteException e) {
mService.mController = null;
Watchdog.getInstance().setActivityController(null);
}
if (!moveOK) {
return false;