~ubuntu-branches/ubuntu/gutsy/kdebase-workspace/gutsy

« back to all changes in this revision

Viewing changes to kwin/kcmkwin/kwincompositing/advanced.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Jonathan Riddell
  • Date: 2007-10-11 14:04:48 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20071011140448-v0eb7lxbb24zagca
Tags: 3.94.0-0ubuntu1
New upstream release

Show diffs side-by-side

added added

removed removed

Lines of Context:
12
12
#include "advanced.moc"
13
13
#include <klocale.h>
14
14
 
 
15
#include <QtDBus/QtDBus>
 
16
 
 
17
#include "compositingprefs.h"
 
18
#include "main.h"
 
19
 
15
20
namespace KWin
16
21
{
17
22
 
18
 
KWinAdvancedCompositingOptions::KWinAdvancedCompositingOptions(QWidget* parent, KSharedConfigPtr config) :
 
23
KWinAdvancedCompositingOptions::KWinAdvancedCompositingOptions(QWidget* parent, KSharedConfigPtr config, CompositingPrefs* defaults) :
19
24
        KDialog(parent)
20
25
{
21
26
    mKWinConfig = config;
 
27
    mDefaultPrefs = defaults;
22
28
 
23
29
    setCaption(i18n("Advanced compositing options"));
24
30
    setButtons(KDialog::Ok | KDialog::Cancel | KDialog::Apply);
56
62
void KWinAdvancedCompositingOptions::compositingModeChanged()
57
63
{
58
64
    ui.glGroup->setEnabled(ui.compositingType->currentIndex() == 0);
 
65
    ui.xrenderGroup->setEnabled(ui.compositingType->currentIndex() == 1);
 
66
}
 
67
 
 
68
void KWinAdvancedCompositingOptions::showConfirmDialog()
 
69
{
 
70
    ConfirmDialog confirm;
 
71
    if(!confirm.exec())
 
72
    {
 
73
        // Revert settings
 
74
        KConfigGroup config(mKWinConfig, "Compositing");
 
75
        config.deleteGroup();
 
76
        QMap<QString, QString>::const_iterator it = mPreviousConfig.constBegin();
 
77
        for(; it != mPreviousConfig.constEnd(); ++it)
 
78
        {
 
79
            config.writeEntry(it.key(), it.value());
 
80
        }
 
81
        // Reinit KWin compositing and reload (old) settings
 
82
        reinitKWinCompositing();
 
83
        load();
 
84
    }
59
85
}
60
86
 
61
87
void KWinAdvancedCompositingOptions::load()
63
89
    KConfigGroup config(mKWinConfig, "Compositing");
64
90
    QString backend = config.readEntry("Backend", "OpenGL");
65
91
    ui.compositingType->setCurrentIndex((backend == "XRender") ? 1 : 0);
 
92
 
66
93
    QString glMode = config.readEntry("GLMode", "TFP");
67
94
    ui.glMode->setCurrentIndex((glMode == "TFP") ? 0 : ((glMode == "SHM") ? 1 : 2));
68
95
    ui.glTextureFilter->setCurrentIndex(config.readEntry("GLTextureFilter", 1));
69
 
    ui.glDirect->setChecked(config.readEntry("GLDirect", true));
70
 
    ui.glVSync->setChecked(config.readEntry("GLVSync", true));
 
96
    ui.glDirect->setChecked(config.readEntry("GLDirect", mDefaultPrefs->enableDirectRendering()));
 
97
    ui.glVSync->setChecked(config.readEntry("GLVSync", mDefaultPrefs->enableVSync()));
 
98
 
 
99
    ui.xrenderSmoothScale->setChecked(config.readEntry("XRenderSmoothScale", false));
 
100
 
 
101
    compositingModeChanged();
71
102
}
72
103
 
73
104
void KWinAdvancedCompositingOptions::save()
78
109
    }
79
110
 
80
111
    KConfigGroup config(mKWinConfig, "Compositing");
 
112
    mPreviousConfig = config.entryMap();
 
113
 
81
114
    config.writeEntry("Backend", (ui.compositingType->currentIndex() == 0) ? "OpenGL" : "XRender");
82
115
    QString glModes[] = { "TFP", "SHM", "Fallback" };
 
116
 
83
117
    config.writeEntry("GLMode", glModes[ui.glMode->currentIndex()]);
84
118
    config.writeEntry("GLTextureFilter", ui.glTextureFilter->currentIndex());
85
119
    config.writeEntry("GLDirect", ui.glDirect->isChecked());
86
120
    config.writeEntry("GLVSync", ui.glVSync->isChecked());
87
121
 
 
122
    config.writeEntry("XRenderSmoothScale", ui.xrenderSmoothScale->isChecked());
 
123
 
88
124
    enableButtonApply(false);
89
 
    emit configSaved();
 
125
 
 
126
    reinitKWinCompositing();
 
127
    showConfirmDialog();
 
128
}
 
129
 
 
130
void KWinAdvancedCompositingOptions::reinitKWinCompositing()
 
131
{
 
132
    // Send signal to kwin
 
133
    mKWinConfig->sync();
 
134
    // Send signal to all kwin instances
 
135
    QDBusMessage message = QDBusMessage::createSignal("/KWin", "org.kde.KWin", "reinitCompositing");
 
136
    QDBusConnection::sessionBus().send(message);
90
137
}
91
138
 
92
139
} // namespace