Add separate option for smooth scaling in XRender mode.
It's slow (software scaling), so it's disabled by default. svn path=/trunk/KDE/kdebase/workspace/; revision=715200
This commit is contained in:
parent
090855777a
commit
840818e39a
5 changed files with 31 additions and 1 deletions
|
@ -62,6 +62,7 @@ void KWinAdvancedCompositingOptions::changed()
|
||||||
void KWinAdvancedCompositingOptions::compositingModeChanged()
|
void KWinAdvancedCompositingOptions::compositingModeChanged()
|
||||||
{
|
{
|
||||||
ui.glGroup->setEnabled(ui.compositingType->currentIndex() == 0);
|
ui.glGroup->setEnabled(ui.compositingType->currentIndex() == 0);
|
||||||
|
ui.xrenderGroup->setEnabled(ui.compositingType->currentIndex() == 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void KWinAdvancedCompositingOptions::showConfirmDialog()
|
void KWinAdvancedCompositingOptions::showConfirmDialog()
|
||||||
|
@ -89,11 +90,16 @@ void KWinAdvancedCompositingOptions::load()
|
||||||
KConfigGroup config(mKWinConfig, "Compositing");
|
KConfigGroup config(mKWinConfig, "Compositing");
|
||||||
QString backend = config.readEntry("Backend", "OpenGL");
|
QString backend = config.readEntry("Backend", "OpenGL");
|
||||||
ui.compositingType->setCurrentIndex((backend == "XRender") ? 1 : 0);
|
ui.compositingType->setCurrentIndex((backend == "XRender") ? 1 : 0);
|
||||||
|
|
||||||
QString glMode = config.readEntry("GLMode", "TFP");
|
QString glMode = config.readEntry("GLMode", "TFP");
|
||||||
ui.glMode->setCurrentIndex((glMode == "TFP") ? 0 : ((glMode == "SHM") ? 1 : 2));
|
ui.glMode->setCurrentIndex((glMode == "TFP") ? 0 : ((glMode == "SHM") ? 1 : 2));
|
||||||
ui.glTextureFilter->setCurrentIndex(config.readEntry("GLTextureFilter", 1));
|
ui.glTextureFilter->setCurrentIndex(config.readEntry("GLTextureFilter", 1));
|
||||||
ui.glDirect->setChecked(config.readEntry("GLDirect", mDefaultPrefs->enableDirectRendering()));
|
ui.glDirect->setChecked(config.readEntry("GLDirect", mDefaultPrefs->enableDirectRendering()));
|
||||||
ui.glVSync->setChecked(config.readEntry("GLVSync", mDefaultPrefs->enableVSync()));
|
ui.glVSync->setChecked(config.readEntry("GLVSync", mDefaultPrefs->enableVSync()));
|
||||||
|
|
||||||
|
ui.xrenderSmoothScale->setChecked(config.readEntry("XRenderSmoothScale", false));
|
||||||
|
|
||||||
|
compositingModeChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
void KWinAdvancedCompositingOptions::save()
|
void KWinAdvancedCompositingOptions::save()
|
||||||
|
@ -108,11 +114,14 @@ void KWinAdvancedCompositingOptions::save()
|
||||||
|
|
||||||
config.writeEntry("Backend", (ui.compositingType->currentIndex() == 0) ? "OpenGL" : "XRender");
|
config.writeEntry("Backend", (ui.compositingType->currentIndex() == 0) ? "OpenGL" : "XRender");
|
||||||
QString glModes[] = { "TFP", "SHM", "Fallback" };
|
QString glModes[] = { "TFP", "SHM", "Fallback" };
|
||||||
|
|
||||||
config.writeEntry("GLMode", glModes[ui.glMode->currentIndex()]);
|
config.writeEntry("GLMode", glModes[ui.glMode->currentIndex()]);
|
||||||
config.writeEntry("GLTextureFilter", ui.glTextureFilter->currentIndex());
|
config.writeEntry("GLTextureFilter", ui.glTextureFilter->currentIndex());
|
||||||
config.writeEntry("GLDirect", ui.glDirect->isChecked());
|
config.writeEntry("GLDirect", ui.glDirect->isChecked());
|
||||||
config.writeEntry("GLVSync", ui.glVSync->isChecked());
|
config.writeEntry("GLVSync", ui.glVSync->isChecked());
|
||||||
|
|
||||||
|
config.writeEntry("XRenderSmoothScale", ui.xrenderSmoothScale->isChecked());
|
||||||
|
|
||||||
enableButtonApply(false);
|
enableButtonApply(false);
|
||||||
|
|
||||||
reinitKWinCompositing();
|
reinitKWinCompositing();
|
||||||
|
|
|
@ -118,6 +118,22 @@
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QGroupBox" name="xrenderGroup" >
|
||||||
|
<property name="title" >
|
||||||
|
<string>XRender options</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" >
|
||||||
|
<item>
|
||||||
|
<widget class="QCheckBox" name="xrenderSmoothScale" >
|
||||||
|
<property name="text" >
|
||||||
|
<string>Smooth scaling (slower)</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<spacer>
|
<spacer>
|
||||||
<property name="orientation" >
|
<property name="orientation" >
|
||||||
|
|
|
@ -226,6 +226,8 @@ void Options::reloadCompositingSettings(const CompositingPrefs& prefs)
|
||||||
glDirect = config.readEntry("GLDirect", prefs.enableDirectRendering() );
|
glDirect = config.readEntry("GLDirect", prefs.enableDirectRendering() );
|
||||||
glVSync = config.readEntry("GLVSync", prefs.enableVSync() );
|
glVSync = config.readEntry("GLVSync", prefs.enableVSync() );
|
||||||
smoothScale = qBound( -1, config.readEntry( "GLTextureFilter", -1 ), 2 );
|
smoothScale = qBound( -1, config.readEntry( "GLTextureFilter", -1 ), 2 );
|
||||||
|
|
||||||
|
xrenderSmoothScale = config.readEntry("XRenderSmoothScale", false );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -297,9 +297,12 @@ class Options : public KDecorationOptions
|
||||||
HiddenPreviews hiddenPreviews;
|
HiddenPreviews hiddenPreviews;
|
||||||
|
|
||||||
uint refreshRate;
|
uint refreshRate;
|
||||||
|
// This is for OpenGL mode
|
||||||
int smoothScale; // 0 = no, 1 = yes when transformed,
|
int smoothScale; // 0 = no, 1 = yes when transformed,
|
||||||
// 2 = try trilinear when transformed; else 1,
|
// 2 = try trilinear when transformed; else 1,
|
||||||
// -1 = auto
|
// -1 = auto
|
||||||
|
// This is for XRender mode
|
||||||
|
bool xrenderSmoothScale;
|
||||||
|
|
||||||
enum GLMode { GLTFP, GLSHM, GLFallback };
|
enum GLMode { GLTFP, GLSHM, GLFallback };
|
||||||
GLMode glMode;
|
GLMode glMode;
|
||||||
|
|
|
@ -453,7 +453,7 @@ void SceneXrender::Window::performPaint( int mask, QRegion region, WindowPaintDa
|
||||||
if( pic == None ) // The render format can be null for GL and/or Xv visuals
|
if( pic == None ) // The render format can be null for GL and/or Xv visuals
|
||||||
return;
|
return;
|
||||||
// set picture filter
|
// set picture filter
|
||||||
if( options->smoothScale > 0 ) // only when forced, it's slow
|
if( options->xrenderSmoothScale ) // only when forced, it's slow
|
||||||
{
|
{
|
||||||
if( mask & PAINT_WINDOW_TRANSFORMED )
|
if( mask & PAINT_WINDOW_TRANSFORMED )
|
||||||
filter = ImageFilterGood;
|
filter = ImageFilterGood;
|
||||||
|
|
Loading…
Reference in a new issue