diff options
author | Xavier Ducrohet <xav@android.com> | 2012-03-06 12:08:49 -0800 |
---|---|---|
committer | Xavier Ducrohet <xav@android.com> | 2012-03-06 12:30:10 -0800 |
commit | 1bdd1764193c7d85649b09d66d6a0bc838c35d46 (patch) | |
tree | 68aa00e411a388b60726690d63a7fa91788ea6cb | |
parent | 3bd2a615de043eb86648671f29376f32230701a2 (diff) | |
download | sdk-1bdd1764193c7d85649b09d66d6a0bc838c35d46.zip sdk-1bdd1764193c7d85649b09d66d6a0bc838c35d46.tar.gz sdk-1bdd1764193c7d85649b09d66d6a0bc838c35d46.tar.bz2 |
Properly disconnect the sdk controller when needed.
This is a temporary fix before we move to a full service.
Also package the MT controller app in the SDK.
Change-Id: Ib8a11f3b69d5545c9f428cbf65b27d903699e7b8
3 files changed, 34 insertions, 6 deletions
diff --git a/apps/SdkController/SdkControllerLib/src/com/android/tools/sdkcontroller/lib/Emulator.java b/apps/SdkController/SdkControllerLib/src/com/android/tools/sdkcontroller/lib/Emulator.java index bb5bec8..d1c9669 100755 --- a/apps/SdkController/SdkControllerLib/src/com/android/tools/sdkcontroller/lib/Emulator.java +++ b/apps/SdkController/SdkControllerLib/src/com/android/tools/sdkcontroller/lib/Emulator.java @@ -86,6 +86,8 @@ public class Emulator { private boolean mIsDisconnected = false;
/** Exit I/O loop flag. */
private boolean mExitIoLoop = false;
+ /** Disconnect flag. */
+ private boolean mDisconnect = false;
/***************************************************************************
* EmulatorChannel - Base class for sync / async channels.
@@ -536,6 +538,15 @@ public class Emulator { constructEmulator(port, ctype);
}
+
+ /**
+ * Disconnects the emulator.
+ */
+ public void disconnect() {
+ mDisconnect = true;
+ mSelector.wakeup();
+ }
+
/**
* Constructs Emulator instance.
*
@@ -698,7 +709,9 @@ public class Emulator { // Check mExitIoLoop before calling 'select', and after in order to
// detect condition when mSelector has been waken up to exit the
// I/O loop.
- while (!mExitIoLoop && mSelector.select() >= 0 && !mExitIoLoop) {
+ while (!mExitIoLoop && !mDisconnect &&
+ mSelector.select() >= 0 &&
+ !mExitIoLoop && !mDisconnect) {
Set<SelectionKey> readyKeys = mSelector.selectedKeys();
Iterator<SelectionKey> i = readyKeys.iterator();
while (i.hasNext()) {
diff --git a/apps/SdkController/SdkControllerMultitouch/src/com/android/tools/sdkcontroller/sdkcontrollermultitouch/SdkControllerMultitouchActivity.java b/apps/SdkController/SdkControllerMultitouch/src/com/android/tools/sdkcontroller/sdkcontrollermultitouch/SdkControllerMultitouchActivity.java index ce4ac1d..5d5f2ef 100644 --- a/apps/SdkController/SdkControllerMultitouch/src/com/android/tools/sdkcontroller/sdkcontrollermultitouch/SdkControllerMultitouchActivity.java +++ b/apps/SdkController/SdkControllerMultitouch/src/com/android/tools/sdkcontroller/sdkcontrollermultitouch/SdkControllerMultitouchActivity.java @@ -122,6 +122,14 @@ public class SdkControllerMultitouchActivity extends Activity implements OnEmula mView = (MultiTouchView) findViewById(R.id.imageView); getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + // Create listener for touch events. + mTouchListener = new TouchListener(); + } + + @Override + protected void onResume() { + super.onResume(); + // Instantiate emulator connector. try { mEmulator = new Emulator(Emulator.MULTITOUCH_PORT, @@ -131,8 +139,17 @@ public class SdkControllerMultitouchActivity extends Activity implements OnEmula finish(); } - // Create listener for touch events. - mTouchListener = new TouchListener(); + } + + @Override + protected void onPause() { + super.onPause(); + + if (mEmulator != null) { + mEmulator.setOnEmulatorListener(null); + mEmulator.disconnect(); + mEmulator = null; + } } /** diff --git a/build/tools.atree b/build/tools.atree index 8fc262c..03868e2 100644 --- a/build/tools.atree +++ b/build/tools.atree @@ -146,9 +146,7 @@ prebuilts/tools/common/proguard/proguard4.7/bin/retrace.sh tools/proguard/bi prebuilts/tools/common/proguard/proguard4.7/src/proguard/ant/task.properties tools/proguard/ant/task.properties # SDK Controller -#sdk/apps/SdkController tools/apps/SdkController -sdk/apps/SdkController/SdkControllerLib tools/apps/SdkController/SdkControllerLib -sdk/apps/SdkController/SdkControllerSensor tools/apps/SdkController/SdkControllerSensor +sdk/apps/SdkController tools/apps/SdkController # tools specific support jar framework/annotations.jar tools/support/annotations.jar |