kemu: make it possible to control CPU cores used easily

Signed-off-by: Ivailo Monev <xakepa10@laimg.moc>
This commit is contained in:
Ivailo Monev 2016-09-12 22:43:47 +00:00
parent f0da391b18
commit 4fc7efa0f9
3 changed files with 43 additions and 21 deletions

View file

@ -6,6 +6,7 @@ find_package(KDE4)
include(KDE4Defaults)
include_directories(${KDE4_INCLUDES})
add_definitions(${KDE4_DEFINITIONS})
set(kemu_sources
main.cpp

View file

@ -83,16 +83,6 @@
<string/>
</property>
<layout class="QGridLayout" name="gridLayout_3">
<item row="1" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>Hard Drive image</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="KUrlRequester" name="CDROMInput"/>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
@ -100,12 +90,19 @@
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="KUrlRequester" name="CDROMInput"/>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>Hard Drive image</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QComboBox" name="systemComboBox"/>
</item>
<item row="1" column="1">
<widget class="KUrlRequester" name="HardDriveInput"/>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
@ -113,6 +110,9 @@
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="KUrlRequester" name="HardDriveInput"/>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
@ -173,7 +173,10 @@
</property>
</widget>
</item>
<item row="5" column="0" colspan="2">
<item row="8" column="1">
<widget class="KLineEdit" name="argumentsLineEdit"/>
</item>
<item row="6" column="0" colspan="2">
<widget class="QCheckBox" name="KVMCheckBox">
<property name="text">
<string>Kernel-based Virtual Machine </string>
@ -183,7 +186,7 @@
</property>
</widget>
</item>
<item row="6" column="0" colspan="2">
<item row="7" column="0" colspan="2">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
@ -196,16 +199,27 @@
</property>
</spacer>
</item>
<item row="7" column="1">
<widget class="KLineEdit" name="argumentsLineEdit"/>
</item>
<item row="7" column="0">
<item row="8" column="0">
<widget class="QLabel" name="label_6">
<property name="text">
<string>Extra arguments</string>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_7">
<property name="text">
<string>CPU cores</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="KIntNumInput" name="CPUInput">
<property name="minimum">
<number>1</number>
</property>
</widget>
</item>
</layout>
</widget>
</item>

View file

@ -25,6 +25,7 @@
#include <KDebug>
#include <QApplication>
#include <QMessageBox>
#include <QThread>
#include "kemumainwindow.h"
#include "ui_kemu.h"
@ -33,8 +34,6 @@ KEmuMainWindow::KEmuMainWindow(QWidget *parent, Qt::WindowFlags flags)
: KXmlGuiWindow(parent, flags), m_kemuui(new Ui_KEmuWindow)
{
m_kemuui->setupUi(this);
m_kemuui->startStopButton->setText(i18n("Start"));
m_kemuui->startStopButton->setIcon(KIcon("system-run"));
KAction *a = actionCollection()->addAction("harddisk_create", this, SLOT(createHardDrive()));
a->setText(i18n("Create Hard Disk image"));
@ -53,6 +52,9 @@ KEmuMainWindow::KEmuMainWindow(QWidget *parent, Qt::WindowFlags flags)
setWindowIcon(KIcon("applications-engineering"));
m_kemuui->groupBox->setEnabled(false);
m_kemuui->startStopButton->setText(i18n("Start"));
m_kemuui->startStopButton->setIcon(KIcon("system-run"));
m_kemuui->CPUInput->setMaximum(QThread::idealThreadCount());
connect(m_kemuui->machinesList->listView()->selectionModel(),
SIGNAL(selectionChanged(QItemSelection,QItemSelection)),
this, SLOT(machineChanged(QItemSelection,QItemSelection)));
@ -123,6 +125,7 @@ KEmuMainWindow::KEmuMainWindow(QWidget *parent, Qt::WindowFlags flags)
connect(m_kemuui->systemComboBox, SIGNAL(currentIndexChanged(QString)), this, SLOT(machineSave(QString)));
connect(m_kemuui->videoComboBox, SIGNAL(currentIndexChanged(QString)), this, SLOT(machineSave(QString)));
connect(m_kemuui->RAMInput, SIGNAL(valueChanged(int)), this, SLOT(machineSave(int)));
connect(m_kemuui->CPUInput, SIGNAL(valueChanged(int)), this, SLOT(machineSave(int)));
connect(m_kemuui->KVMCheckBox, SIGNAL(stateChanged(int)), this, SLOT(machineSave(int)));
connect(m_kemuui->argumentsLineEdit, SIGNAL(textChanged(QString)), this, SLOT(machineSave(QString)));
}
@ -165,6 +168,7 @@ void KEmuMainWindow::machineSave(const QString ignored)
m_settings->setValue(machine + "/system", m_kemuui->systemComboBox->currentText());
m_settings->setValue(machine + "/video", m_kemuui->videoComboBox->currentText());
m_settings->setValue(machine + "/ram", m_kemuui->RAMInput->value());
m_settings->setValue(machine + "/cpu", m_kemuui->CPUInput->value());
m_settings->setValue(machine + "/kvm", m_kemuui->KVMCheckBox->isChecked());
m_settings->setValue(machine + "/args", m_kemuui->argumentsLineEdit->text());
m_settings->sync();
@ -189,6 +193,7 @@ void KEmuMainWindow::machineLoad(const QString machine)
const int videoIndex = m_kemuui->videoComboBox->findText(video);
m_kemuui->videoComboBox->setCurrentIndex(videoIndex);
m_kemuui->RAMInput->setValue(m_settings->value(machine + "/ram", 32).toInt());
m_kemuui->CPUInput->setValue(m_settings->value(machine + "/cpu", 1).toInt());
m_kemuui->KVMCheckBox->setChecked(m_settings->value(machine + "/kvm", false).toBool());
m_kemuui->argumentsLineEdit->setText(m_settings->value(machine + "/args").toString());
}
@ -257,6 +262,7 @@ void KEmuMainWindow::startStopMachine()
} else {
kDebug() << "starting machine" << machine;
QStringList machineArgs;
machineArgs << "-name" << machine;
const QString CDRom = m_kemuui->CDROMInput->url().prettyUrl();
if (!CDRom.isEmpty()) {
machineArgs << "-cdrom" << CDRom;
@ -272,6 +278,7 @@ void KEmuMainWindow::startStopMachine()
}
machineArgs << "-vga" << m_kemuui->videoComboBox->currentText();
machineArgs << "-m" << QByteArray::number(m_kemuui->RAMInput->value());
machineArgs << "-smp" << QByteArray::number(m_kemuui->CPUInput->value());
if (m_kemuui->KVMCheckBox->isChecked()) {
machineArgs << "-enable-kvm";
}