aboutsummaryrefslogtreecommitdiffstats
path: root/hierarchyviewer2
diff options
context:
space:
mode:
authorXavier Ducrohet <xav@android.com>2010-08-31 10:36:01 -0700
committerXavier Ducrohet <xav@android.com>2010-08-31 10:43:23 -0700
commit0b5b3edc79c75602b269fa9a0fdca842b408c4d5 (patch)
tree24b5d551881ba1b103a755f0abf5827a6adb63d6 /hierarchyviewer2
parentc784afa7fda424961b9e80c3cd820c2382d793e3 (diff)
downloadsdk-0b5b3edc79c75602b269fa9a0fdca842b408c4d5.zip
sdk-0b5b3edc79c75602b269fa9a0fdca842b408c4d5.tar.gz
sdk-0b5b3edc79c75602b269fa9a0fdca842b408c4d5.tar.bz2
Make the HierarchyViewer plug-in not screw up DDMS.
The HV plug-in behaved like the standalone app and initialized the AndroidDebugBridge with no client support (even though this init is handled by DDMS) and would recreate the bridge object destroying the one created by DDMS. This completely broke DDMS. Change-Id: Ife1187c74daef69607d508aabb1f7234507a170f
Diffstat (limited to 'hierarchyviewer2')
-rw-r--r--hierarchyviewer2/libs/hierarchyviewerlib/src/com/android/hierarchyviewerlib/HierarchyViewerDirector.java18
-rw-r--r--hierarchyviewer2/libs/hierarchyviewerlib/src/com/android/hierarchyviewerlib/device/DeviceBridge.java34
2 files changed, 50 insertions, 2 deletions
diff --git a/hierarchyviewer2/libs/hierarchyviewerlib/src/com/android/hierarchyviewerlib/HierarchyViewerDirector.java b/hierarchyviewer2/libs/hierarchyviewerlib/src/com/android/hierarchyviewerlib/HierarchyViewerDirector.java
index 63b30c0..f397b1f 100644
--- a/hierarchyviewer2/libs/hierarchyviewerlib/src/com/android/hierarchyviewerlib/HierarchyViewerDirector.java
+++ b/hierarchyviewer2/libs/hierarchyviewerlib/src/com/android/hierarchyviewerlib/HierarchyViewerDirector.java
@@ -17,6 +17,7 @@
package com.android.hierarchyviewerlib;
import com.android.ddmlib.AdbCommandRejectedException;
+import com.android.ddmlib.AndroidDebugBridge;
import com.android.ddmlib.IDevice;
import com.android.ddmlib.Log;
import com.android.ddmlib.RawImage;
@@ -88,6 +89,21 @@ public abstract class HierarchyViewerDirector implements IDeviceChangeListener,
return sDirector;
}
+ /**
+ * Init the DeviceBridge with an existing {@link AndroidDebugBridge}. This loops until
+ * a bridge exists or a timeout is reached.
+ */
+ public boolean acquireBridge() {
+ return DeviceBridge.acquireBridge();
+ }
+
+ /**
+ * Creates an {@link AndroidDebugBridge} connected to adb at the given location.
+ *
+ * If a bridge is already running, this disconnects it and creates a new one.
+ *
+ * @param adbLocation the location to adb.
+ */
public void initDebugBridge() {
DeviceBridge.initDebugBridge(getAdbLocation());
}
@@ -633,7 +649,7 @@ public abstract class HierarchyViewerDirector implements IDeviceChangeListener,
}
}
}
-
+
public void setPixelPerfectAutoRefreshInterval(int value) {
synchronized (mPixelPerfectRefreshTimer) {
if (mPixelPerfectAutoRefreshInterval == value) {
diff --git a/hierarchyviewer2/libs/hierarchyviewerlib/src/com/android/hierarchyviewerlib/device/DeviceBridge.java b/hierarchyviewer2/libs/hierarchyviewerlib/src/com/android/hierarchyviewerlib/device/DeviceBridge.java
index 20feeec..74fbc13 100644
--- a/hierarchyviewer2/libs/hierarchyviewerlib/src/com/android/hierarchyviewerlib/device/DeviceBridge.java
+++ b/hierarchyviewer2/libs/hierarchyviewerlib/src/com/android/hierarchyviewerlib/device/DeviceBridge.java
@@ -80,6 +80,37 @@ public class DeviceBridge {
}
}
+ /**
+ * Init the DeviceBridge with an existing {@link AndroidDebugBridge}. This loops until
+ * a bridge exists or a timeout is reached.
+ */
+ public static boolean acquireBridge() {
+ int count = 10;
+ do {
+ sBridge = AndroidDebugBridge.getBridge();
+ if (sBridge == null) {
+ try {
+ Thread.sleep(500);
+ count--;
+ if (count == 0) {
+ return false;
+ }
+ } catch (InterruptedException e) {
+ // pass
+ }
+ }
+ } while (sBridge == null);
+
+ return true;
+ }
+
+ /**
+ * Creates an {@link AndroidDebugBridge} connected to adb at the given location.
+ *
+ * If a bridge is already running, this disconnects it and creates a new one.
+ *
+ * @param adbLocation the location to adb.
+ */
public static void initDebugBridge(String adbLocation) {
if (sBridge == null) {
AndroidDebugBridge.init(false /* debugger support */);
@@ -89,6 +120,7 @@ public class DeviceBridge {
}
}
+ /** Disconnects the current {@link AndroidDebugBridge}. */
public static void terminate() {
AndroidDebugBridge.terminate();
}
@@ -117,7 +149,7 @@ public class DeviceBridge {
* <p/>
* This starts a port forwarding between a local port and a port on the
* device.
- *
+ *
* @param device
*/
public static void setupDeviceForward(IDevice device) {