Merge pull request #115 from AnBui2004/master

Kill Qemu process
This commit is contained in:
NOURELDEEN ELSAYED 2024-09-16 16:36:52 +03:00 committed by GitHub
commit cac0979136
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 377 additions and 0 deletions

View file

@ -313,6 +313,8 @@ public class MainVNCActivity extends VncCanvasActivity {
// Stop the service
MainService.stopService();
Terminal.killQemuProcess();
VectrasApp.killcurrentqemuprocess(getApplicationContext());
finish();
}
})

View file

@ -706,6 +706,18 @@ public class MainActivity extends AppCompatActivity {
} else if (id == R.id.arch) {
startActivity(new Intent(activity, SetArchActivity.class));
} else if (id == R.id.shutdown) {
AlertDialog alertDialog = new AlertDialog.Builder(activity, R.style.MainDialogTheme).create();
alertDialog.setTitle("Do you want to kill all Qemu processes?");
alertDialog.setMessage("All running VMs will be forcibly shut down.");
alertDialog.setCancelable(true);
alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, "Kill all", (dialog, which) -> {
VectrasApp.killallqemuprocesses(getApplicationContext());
});
alertDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "Cancel", (dialog, which) -> {
});
alertDialog.show();
}
return super.onOptionsItemSelected(item);

View file

@ -29,6 +29,7 @@ import androidx.core.content.res.ResourcesCompat;
import com.google.android.material.color.DynamicColors;
import com.vectras.qemu.MainSettingsManager;
import com.vectras.vterm.Terminal;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
@ -408,4 +409,32 @@ public class VectrasApp extends Application {
restart();
}
}
public static void killallqemuprocesses(Context context) {
Terminal vterm = new Terminal(context);
vterm.executeShellCommand("killall -9 qemu-system-i386", false, MainActivity.activity);
vterm.executeShellCommand("killall -9 qemu-system-x86_64", false, MainActivity.activity);
vterm.executeShellCommand("killall -9 qemu-system-aarch64", false, MainActivity.activity);
vterm.executeShellCommand("killall -9 qemu-system-ppc", false, MainActivity.activity);
}
public static void killcurrentqemuprocess(Context context) {
Terminal vterm = new Terminal(context);
String env = "killall -9 ";
switch (MainSettingsManager.getArch(MainActivity.activity)) {
case "ARM64":
env += "qemu-system-aarch64";
break;
case "PPC":
env += "qemu-system-ppc";
break;
case "I386":
env += "qemu-system-i386";
break;
default:
env += "qemu-system-x86_64";
break;
}
vterm.executeShellCommand(env, false, MainActivity.activity);
}
}

View file

@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
android:pathData="M480,880Q397,880 324,848.5Q251,817 197,763Q143,709 111.5,636Q80,563 80,480Q80,396 111.5,323.5Q143,251 197,197L253,253Q209,297 184.5,355Q160,413 160,480Q160,614 253,707Q346,800 480,800Q614,800 707,707Q800,614 800,480Q800,413 775.5,355Q751,297 707,253L763,197Q817,251 848.5,323.5Q880,396 880,480Q880,563 848.5,636Q817,709 763,763Q709,817 636,848.5Q563,880 480,880ZM440,520L440,80L520,80L520,520L440,520Z"/>
</vector>

View file

@ -13,4 +13,10 @@
app:showAsAction="always"
android:title="@string/title_activity_set_arch"/>
<item
android:id="@+id/shutdown"
android:icon="@drawable/power_settings_new_24px"
app:showAsAction="always"
android:title="Shut down"/>
</menu>