Zarin / kwin

KDE's window manager

This URL has Read+Write access

Zarin (author)
Mon Sep 22 04:45:12 -0700 2008
commit  5ece56d33280575edbf77cec41cfa34c72e15a85
tree    9cc291fd6d58f0e2ffe10974957d456afe6c9d89
parent  6cb77a6de5e0e7f45781ee91bee7345b28426e67
kwin / compositingprefs.h
100644 101 lines (72 sloc) 2.672 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
/********************************************************************
KWin - the KDE window manager
This file is part of the KDE project.
 
Copyright (C) 2007 Rivo Laks <rivolaks@hot.ee>
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*********************************************************************/
 
#ifndef KWIN_COMPOSITINGPREFS_H
#define KWIN_COMPOSITINGPREFS_H
 
#include <QString>
#include <QStringList>
 
#include "kwinglutils.h"
 
 
namespace KWin
{
 
class CompositingPrefs
{
public:
    CompositingPrefs();
    ~CompositingPrefs();
 
    class Version : public QStringList
    {
    public:
        Version() : QStringList() {}
        Version( const QString& str );
 
        int compare( const Version& v ) const;
 
        bool operator<( const Version& v ) const { return ( compare( v ) == -1 ); }
        bool operator<=( const Version& v ) const { return ( compare( v ) != 1 ); }
        bool operator>( const Version& v ) const { return ( compare( v ) == 1 ); }
        bool operator>=( const Version& v ) const { return ( compare( v ) != -1 ); }
    };
 
    static bool compositingPossible();
    static QString compositingNotPossibleReason();
    bool enableCompositing() const;
    bool enableVSync() const { return mEnableVSync; }
    bool enableDirectRendering() const { return mEnableDirectRendering; }
    bool strictBinding() const { return mStrictBinding; }
 
    void detect();
 
    QString driver() const { return mDriver; }
    Version version() const { return mVersion; }
    bool xgl() const { return mXgl; }
 
 
protected:
 
    void detectDriverAndVersion();
    void applyDriverSpecificOptions();
    static bool detectXgl();
 
    bool initGLXContext();
    void deleteGLXContext();
 
 
private:
    QString mGLVendor;
    QString mGLRenderer;
    QString mGLVersion;
    QString mDriver;
    Version mVersion;
    bool mXgl;
 
    bool mEnableCompositing;
    bool mEnableVSync;
    bool mEnableDirectRendering;
    bool mStrictBinding;
 
#ifdef KWIN_HAVE_OPENGL_COMPOSITING
    GLXContext mGLContext;
    Window mGLWindow;
#endif
};
 
}
 
#endif //KWIN_COMPOSITINGPREFS_H