/***************************************************************** KWin - the KDE window manager This file is part of the KDE project. Copyright (C) 2007 Rivo Laks You can Freely distribute this program under the GNU General Public License. See the file "COPYING" for the exact licensing terms. ******************************************************************/ #ifndef KWIN_COMPOSITINGPREFS_H #define KWIN_COMPOSITINGPREFS_H #include #include #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 { return mEnableCompositing; } 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 createGLXContext(); void deleteGLXContext(); private: QString mGLVendor; QString mGLRenderer; QString mGLVersion; QString mDriver; Version mVersion; bool mXgl; bool mEnableCompositing; bool mEnableVSync; bool mEnableDirectRendering; bool mStrictBinding; #ifdef HAVE_OPENGL GLXContext mGLContext; Window mGLWindow; #endif }; } #endif //KWIN_COMPOSITINGPREFS_H