20H18D16092024

This commit is contained in:
An Bui 2024-09-16 20:19:35 +07:00
parent de5b21869a
commit 62fadb00f1
5 changed files with 59 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;
@ -386,6 +387,34 @@ public class VectrasApp extends Application {
return (int) (dpValue * scale + 0.5f);
}
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);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, android.R.id.copy, 0, android.R.string.copy).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);