Add ComboBox for Compositing Type and for Graphics System
This commit is contained in:
parent
ed2cf5a8b5
commit
c32758c458
3 changed files with 102 additions and 0 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue