[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    branches/KDE/3.4/kdebase
From:       Luboš Luňák <l.lunak () kde ! org>
Date:       2005-07-21 14:46:40
Message-ID: 1121957200.056222.22547.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 437324 by lunakl:

Backport r73813 (no flickering for opengl).



 M  +4 -3      kcontrol/screensaver/Makefile.am  
 A             kcontrol/screensaver/configure.in.in  
 M  +3 -4      kcontrol/screensaver/kssmonitor.h  
 A             kcontrol/screensaver/kswidget.cpp   [License: no copyright]
 A             kcontrol/screensaver/kswidget.h   [License: no copyright]
 M  +1 -1      kcontrol/screensaver/testwin.cpp  
 M  +2 -2      kcontrol/screensaver/testwin.h  
 M  +2 -2      kdesktop/lock/Makefile.am  
 M  +9 -0      kdesktop/lock/configure.in.in  
 M  +33 -16    kdesktop/lock/lockprocess.cc  
 M  +1 -1      kdesktop/lock/lockprocess.h  


--- branches/KDE/3.4/kdebase/kcontrol/screensaver/Makefile.am #437323:437324
@@ -1,11 +1,12 @@
 
-AM_CPPFLAGS = $(all_includes)
+AM_CPPFLAGS = $(GLINC) $(all_includes)
 
 kde_module_LTLIBRARIES = kcm_screensaver.la
 
-kcm_screensaver_la_SOURCES = advanceddialogimpl.ui scrnsave.cpp testwin.cpp \
saverlist.cpp saverconfig.cpp advanceddialog.cpp  +kcm_screensaver_la_SOURCES = \
advanceddialogimpl.ui scrnsave.cpp testwin.cpp saverlist.cpp \ +        \
saverconfig.cpp advanceddialog.cpp kswidget.cpp  kcm_screensaver_la_LDFLAGS = -module \
                -avoid-version $(all_libraries) -no-undefined
-kcm_screensaver_la_LIBADD = $(LIB_KSYCOCA) $(DPMSLIB)
+kcm_screensaver_la_LIBADD = $(LIB_KSYCOCA) $(DPMSLIB) $(GLLIB)
 METASOURCES = AUTO
 
 noinst_HEADERS = scrnsave.h
--- branches/KDE/3.4/kdebase/kcontrol/screensaver/kssmonitor.h #437323:437324
@@ -1,13 +1,12 @@
 #ifndef KSSMONITOR_H
 #define KSSMONITOR_H
 
-#include <qxembed.h>
+#include "kswidget.h"
 
-class KSSMonitor : public QXEmbed
+class KSSMonitor : public KSWidget
 {
-    Q_OBJECT
 public:
-    KSSMonitor( QWidget *parent ) : QXEmbed( parent ) {}
+    KSSMonitor( QWidget *parent ) : KSWidget( parent ) {}
 
     // we don't want no steenking palette change
     virtual void setPalette( const QPalette & ) {}
--- branches/KDE/3.4/kdebase/kcontrol/screensaver/testwin.cpp #437323:437324
@@ -4,7 +4,7 @@
 class QXEmbed;
 
 TestWin::TestWin()
-    : QXEmbed(0, 0, WStyle_Customize | WStyle_NoBorder | WX11BypassWM )
+    : KSWidget(0, 0, WStyle_Customize | WStyle_NoBorder | WX11BypassWM )
 {
     setFocusPolicy(StrongFocus);
     KWin::setState( winId(), NET::StaysOnTop );
--- branches/KDE/3.4/kdebase/kcontrol/screensaver/testwin.h #437323:437324
@@ -1,9 +1,9 @@
 #ifndef TESTWIN_H
 #define TESTWIN_H
 
-#include <qxembed.h>
+#include "kswidget.h"
 
-class TestWin : public QXEmbed
+class TestWin : public KSWidget
 {
     Q_OBJECT
 public:
--- branches/KDE/3.4/kdebase/kdesktop/lock/Makefile.am #437323:437324
@@ -1,8 +1,8 @@
 ## Makefile.am of kdebase/kdesktop/lock
 
-INCLUDES = -I.. -I$(top_srcdir)/kcheckpass -I$(top_srcdir)/kdmlib $(all_includes)
+INCLUDES = -I.. -I$(top_srcdir)/kcheckpass -I$(top_srcdir)/kdmlib $(GLINC) \
$(all_includes)  kdesktop_lock_LDFLAGS  = $(all_libraries) $(KDE_RPATH)
-kdesktop_lock_LDADD    = ../libkdesktopsettings.la ../../kdmlib/libdmctl.la \
$(LIB_KIO) $(LIB_XF86MISC) +kdesktop_lock_LDADD    = ../libkdesktopsettings.la \
../../kdmlib/libdmctl.la $(LIB_KIO) $(LIB_XF86MISC) $(GLLIB)  
 ####### Files
 
--- branches/KDE/3.4/kdebase/kdesktop/lock/configure.in.in #437323:437324
@@ -26,3 +26,12 @@
 fi
 
 LDFLAGS="$xss_save_ldflags"
+
+AC_HAVE_GL(
+    [
+    AC_CHECK_LIB(GL,glXChooseVisual,
+        [
+        AC_DEFINE(HAVE_GLXCHOOSEVISUAL, 1, [Define if you have glXChooseVisual()])
+        ])
+    ],[]
+    )
--- branches/KDE/3.4/kdebase/kdesktop/lock/lockprocess.cc #437323:437324
@@ -80,6 +80,10 @@
 #include <X11/extensions/xf86misc.h>
 #endif
 
+#ifdef HAVE_GLXCHOOSEVISUAL
+#include <GL/glx.h>
+#endif
+
 #define LOCK_GRACE_DEFAULT          5000
 #define AUTOLOGOUT_DEFAULT          600
 
@@ -95,6 +99,7 @@
 //
 LockProcess::LockProcess(bool child, bool useBlankOnly)
     : QWidget(0L, "saver window", WX11BypassWM),
+      mOpenGLVisual(0),
       child_saver(child),
       mParent(0),
       mUseBlankOnly(useBlankOnly),
@@ -138,10 +143,6 @@
     gXA_VROOT = XInternAtom (qt_xdisplay(), "__SWM_VROOT", False);
     gXA_SCREENSAVER_VERSION = XInternAtom (qt_xdisplay(), "_SCREENSAVER_VERSION", \
False);  
-    XWindowAttributes attrs;
-    XGetWindowAttributes(qt_xdisplay(), winId(), &attrs);
-    mColorMap = attrs.colormap;
-
     connect(&mHackProc, SIGNAL(processExited(KProcess *)),
                         SLOT(hackExited(KProcess *)));
 
@@ -371,6 +372,10 @@
 				kdDebug(1204) << "Screensaver is type OpenGL and OpenGL is forbidden" << endl;
 				mForbidden = true;
 			}
+			if (saverTypes[i] == "OpenGL")
+			{
+				mOpenGLVisual = true;
+			}
 		}
 	}
 
@@ -390,8 +395,29 @@
 //
 void LockProcess::createSaverWindow()
 {
-    // We only create the window once, but we reset its attributes every
-    // time.
+    Visual* visual = CopyFromParent;
+    XSetWindowAttributes attrs;
+    int flags = 0;
+#ifdef HAVE_GLXCHOOSEVISUAL
+    if( mOpenGLVisual )
+    {
+        int attribs[] = { GLX_RGBA, GLX_DOUBLEBUFFER, GLX_DEPTH_SIZE, x11Depth(), \
None }; +        if( XVisualInfo* i = glXChooseVisual( x11Display(), x11Screen(), \
attribs )) +        {
+            visual = i->visual;
+            static Colormap colormap = 0;
+            if( colormap != 0 )
+                XFreeColormap( x11Display(), colormap );
+            colormap = XCreateColormap( x11Display(), RootWindow( x11Display(), \
x11Screen()), visual, AllocNone ); +            attrs.colormap = colormap;
+            flags |= CWColormap;
+            XFree( i );
+        }
+    }
+#endif
+    Window w = XCreateWindow( x11Display(), RootWindow( x11Display(), x11Screen()),
+        x(), y(), width(), height(), 0, x11Depth(), InputOutput, visual, flags, \
&attrs ); +    create( w );
 
     // Some xscreensaver hacks check for this property
     const char *version = "KDE 2.0";
@@ -400,19 +426,10 @@
                      (unsigned char *) version, strlen(version));
 
     XSetWindowAttributes attr;
-    if (mColorMap != None)
-    {
-        attr.colormap = mColorMap;
-    }
-    else
-    {
-        attr.colormap = DefaultColormapOfScreen(
-                                ScreenOfDisplay(qt_xdisplay(), qt_xscreen()));
-    }
     attr.event_mask = KeyPressMask | ButtonPressMask | PointerMotionMask |
                         VisibilityChangeMask | ExposureMask;
     XChangeWindowAttributes(qt_xdisplay(), winId(),
-                            CWEventMask | CWColormap, &attr);
+                            CWEventMask, &attr);
 
     // erase();
 
--- branches/KDE/3.4/kdebase/kdesktop/lock/lockprocess.h #437323:437324
@@ -100,12 +100,12 @@
     int         mLockGrace;
     int         mPriority;
     bool        mBusy;
-    Colormap    mColorMap;
     KProcess    mHackProc;
     int         mRootWidth;
     int         mRootHeight;
     QString     mSaverExec;
     QString     mSaver;
+    bool        mOpenGLVisual;
     bool        child_saver;
     QValueList<int> child_sockets;
     int         mParent;


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic