aboutsummaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorXavier Ducrohet <xav@android.com>2012-03-06 12:08:49 -0800
committerXavier Ducrohet <xav@android.com>2012-03-06 12:30:10 -0800
commit1bdd1764193c7d85649b09d66d6a0bc838c35d46 (patch)
tree68aa00e411a388b60726690d63a7fa91788ea6cb /apps
parent3bd2a615de043eb86648671f29376f32230701a2 (diff)
downloadsdk-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
Diffstat (limited to 'apps')
-rwxr-xr-xapps/SdkController/SdkControllerLib/src/com/android/tools/sdkcontroller/lib/Emulator.java15
-rw-r--r--apps/SdkController/SdkControllerMultitouch/src/com/android/tools/sdkcontroller/sdkcontrollermultitouch/SdkControllerMultitouchActivity.java21
2 files changed, 33 insertions, 3 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;
+ }
}
/**