From dcc72b2d2057138024c1e521f0899860439ecafa Mon Sep 17 00:00:00 2001 From: Xavier Ducrohet Date: Mon, 11 Jan 2010 18:15:12 -0800 Subject: [PATCH] ADV Manager: prevent deletion of running AVDs Bug: 2364918 Change-Id: Ibe01e0b2d51f6d7df1972f57ff7fadb6116175df --- .../src/com/android/sdklib/internal/avd/AvdManager.java | 8 ++++++++ .../android/sdkuilib/internal/widgets/AvdSelector.java | 15 +++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/avd/AvdManager.java b/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/avd/AvdManager.java index 0713e7476..986d7609d 100644 --- a/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/avd/AvdManager.java +++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/avd/AvdManager.java @@ -308,6 +308,14 @@ public final class AvdManager { } /** + * Returns whether an emulator is currently running the AVD. + */ + public boolean isRunning() { + File f = new File(mPath, "userdata-qemu.img.lock"); + return f.isFile(); + } + + /** * Compares this object with the specified object for order. Returns a * negative integer, zero, or a positive integer as this object is less * than, equal to, or greater than the specified object. diff --git a/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/widgets/AvdSelector.java b/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/widgets/AvdSelector.java index c302cd645..b97d8fb55 100644 --- a/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/widgets/AvdSelector.java +++ b/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/widgets/AvdSelector.java @@ -837,6 +837,21 @@ public final class AvdSelector { // get the current Display final Display display = mTable.getDisplay(); + // check if the AVD is running + if (avdInfo.isRunning()) { + display.asyncExec(new Runnable() { + public void run() { + Shell shell = display.getActiveShell(); + MessageDialog.openError(shell, + "Delete Android Virtual Device", + String.format( + "The Android Virtual Device '%1$s' is currently running in an emulator and cannot be deleted.", + avdInfo.getName())); + } + }); + return; + } + // Confirm you want to delete this AVD final boolean[] result = new boolean[1]; display.syncExec(new Runnable() { -- 2.11.0