Add ComboBox for Compositing Type and for Graphics System

This commit is contained in:
Antonis Tsiapaliokas 2013-08-22 18:49:49 +03:00 committed by Martin Gräßlin
parent ed2cf5a8b5
commit c32758c458
3 changed files with 102 additions and 0 deletions

View file

@ -26,6 +26,8 @@
#include <QDBusInterface>
#include <QDBusReply>
#include <QDebug>
namespace KWin {
namespace Compositing {
@ -59,5 +61,74 @@ bool Compositing::OpenGLIsBroken() {
return false;
}
void Compositing::syncConfig(int openGLType, int graphicsSystem) {
QString graphicsSystemType;
QString backend;
bool glLegacy;
bool glCore;
switch (openGLType) {
case OPENGL31_INDEX:
backend = "OpenGL";
glLegacy = false;
glCore = true;
break;
case OPENGL20_INDEX:
backend = "OpenGL";
glLegacy = false;
glCore = false;
break;
case OPENGL12_INDEX:
backend = "OpenGL";
glLegacy = true;
glCore = false;
break;
case XRENDER_INDEX:
backend = "XRender";
glLegacy = false;
glCore = false;
break;
}
graphicsSystem == 0 ? graphicsSystemType = "native" : graphicsSystemType = "raster";
KConfigGroup kwinConfig(KSharedConfig::openConfig("kwinrc"), "Compositing");
kwinConfig.writeEntry("Backend", backend);
kwinConfig.writeEntry("GLLegacy", glLegacy);
kwinConfig.writeEntry("GLCore", glCore);
kwinConfig.writeEntry("GraphicsSystem", graphicsSystemType);
kwinConfig.sync();
}
int Compositing::currentOpenGLType() {
KConfigGroup kwinConfig(KSharedConfig::openConfig("kwinrc"), "Compositing");
QString backend = kwinConfig.readEntry("Backend", "OpenGL");
bool glLegacy = kwinConfig.readEntry("GLLegacy", false);
bool glCore = kwinConfig.readEntry("GLCore", false);
int currentIndex = OPENGL20_INDEX;
if (backend == "OpenGL") {
if (glLegacy) {
currentIndex = OPENGL12_INDEX;
} else if (glCore) {
currentIndex = OPENGL31_INDEX;
} else {
currentIndex = OPENGL20_INDEX;
}
} else {
currentIndex = XRENDER_INDEX;
}
return currentIndex;
}
int Compositing::currentGraphicsSystem() {
KConfigGroup kwinConfig(KSharedConfig::openConfig("kwinrc"), "Compositing");
QString graphicsSystem = kwinConfig.readEntry("GraphicsSystem", "native");
return graphicsSystem == "native" ? 0 : 1;
}
}//end namespace Compositing
}//end namespace KWin

View file

@ -35,6 +35,18 @@ public:
Q_INVOKABLE bool OpenGLIsUnsafe();
Q_INVOKABLE bool OpenGLIsBroken();
Q_INVOKABLE void syncConfig(int openGLType, int graphicsSystem);
Q_INVOKABLE int currentOpenGLType();
Q_INVOKABLE int currentGraphicsSystem();
private:
enum OpenGLTypeIndex {
OPENGL31_INDEX = 0,
OPENGL20_INDEX,
OPENGL12_INDEX,
XRENDER_INDEX
};
};
}//end namespace Compositing
}//end namespace KWin

View file

@ -54,6 +54,24 @@ Item {
onClicked: effectModel.enableWidnowManagement(windowManagement.checked)
}
ComboBox {
id: openGLType
model: ["OpenGL 3.1", "OpenGL 2.1", "OpenGL 1.2", "XRender"]
currentIndex: compositing.currentOpenGLType()
anchors.top: windowManagement.bottom
anchors.left: col.right
onCurrentIndexChanged: apply.enabled = true
}
ComboBox {
id: graphicsSystem
model: ["Native", "Raster"]
currentIndex: compositing.currentGraphicsSystem()
anchors.top: openGLType.bottom
anchors.left: col.right
onCurrentIndexChanged: apply.enabled = true
}
ColumnLayout {
id: col
height: parent.height
@ -122,6 +140,7 @@ Item {
effectModel.syncConfig();
effectModel.reload();
apply.enabled = false;
compositing.syncConfig(openGLType.currentIndex, graphicsSystem.currentIndex);
}
}