am 9c902ca4: am 33669f35: Merge "Kill dreams that do not create a timely service connection." into jb-mr1.1-dev
* commit '9c902ca4732f8c2a5afda4047415d1de6d3db493': Kill dreams that do not create a timely service connection.
This commit is contained in:
@@ -44,6 +44,9 @@ import java.util.NoSuchElementException;
|
||||
final class DreamController {
|
||||
private static final String TAG = "DreamController";
|
||||
|
||||
// How long we wait for a newly bound dream to create the service connection
|
||||
private static final int DREAM_CONNECTION_TIMEOUT = 5 * 1000;
|
||||
|
||||
private final Context mContext;
|
||||
private final Handler mHandler;
|
||||
private final Listener mListener;
|
||||
@@ -58,6 +61,16 @@ final class DreamController {
|
||||
|
||||
private DreamRecord mCurrentDream;
|
||||
|
||||
private final Runnable mStopUnconnectedDreamRunnable = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (mCurrentDream != null && mCurrentDream.mBound && !mCurrentDream.mConnected) {
|
||||
Slog.w(TAG, "Bound dream did not connect in the time allotted");
|
||||
stopDream();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
public DreamController(Context context, Handler handler, Listener listener) {
|
||||
mContext = context;
|
||||
mHandler = handler;
|
||||
@@ -116,6 +129,7 @@ final class DreamController {
|
||||
}
|
||||
|
||||
mCurrentDream.mBound = true;
|
||||
mHandler.postDelayed(mStopUnconnectedDreamRunnable, DREAM_CONNECTION_TIMEOUT);
|
||||
}
|
||||
|
||||
public void stopDream() {
|
||||
@@ -128,6 +142,8 @@ final class DreamController {
|
||||
Slog.i(TAG, "Stopping dream: name=" + oldDream.mName
|
||||
+ ", isTest=" + oldDream.mIsTest + ", userId=" + oldDream.mUserId);
|
||||
|
||||
mHandler.removeCallbacks(mStopUnconnectedDreamRunnable);
|
||||
|
||||
if (oldDream.mSentStartBroadcast) {
|
||||
mContext.sendBroadcastAsUser(mDreamingStoppedIntent, UserHandle.ALL);
|
||||
}
|
||||
@@ -200,6 +216,7 @@ final class DreamController {
|
||||
public final int mUserId;
|
||||
|
||||
public boolean mBound;
|
||||
public boolean mConnected;
|
||||
public IDreamService mService;
|
||||
public boolean mSentStartBroadcast;
|
||||
|
||||
@@ -231,6 +248,7 @@ final class DreamController {
|
||||
mHandler.post(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
mConnected = true;
|
||||
if (mCurrentDream == DreamRecord.this && mService == null) {
|
||||
attach(IDreamService.Stub.asInterface(service));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user