[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: kdeartwork/kscreensaver/kdesavers
From: Enrico Ros <rosenric () dei ! unipd ! it>
Date: 2004-04-02 11:06:48
Message-ID: 20040402110648.69F3499ED () office ! kde ! org
[Download RAW message or body]
CVS commit by eros:
Euphoria cumulative patch. Fixes the "white bg" bug, some mem leaks, more
precise timings and minor things.
CCMAIL: 57429-done@bugs.kde.org
M +23 -13 Euphoria.cpp 1.9
M +1 -1 Euphoria.h 1.3
--- kdeartwork/kscreensaver/kdesavers/Euphoria.cpp #1.8:1.9
@@ -46,10 +46,10 @@
-// Returns the system time, in milliseconds.
-long timeGetTime()
+// Returns the system time, in seconds.
+double timeGetTime()
{
struct timeval tp;
gettimeofday( &tp, 0 );
- return (tp.tv_sec * 1000) + (tp.tv_usec / 1000);
+ return (double)tp.tv_sec + (double)tp.tv_usec / 1000000;
}
@@ -459,5 +459,6 @@ void wisp::drawAsBackground()
EuphoriaWidget::EuphoriaWidget( QWidget* parent, const char* name )
- : QGLWidget(parent, name), _wisps(0), _backwisps(0)
+ : QGLWidget(parent, name), texName(0), _wisps(0), _backwisps(0),
+ feedbackmap(0), feedbacktex(0)
{
setDefaults( Regular );
@@ -472,4 +473,8 @@ EuphoriaWidget::~EuphoriaWidget()
{
// Free memory
+ if ( texName )
+ glDeleteTextures( 1, &texName );
+ if ( feedbacktex )
+ glDeleteTextures( 1, &feedbacktex );
delete[] _wisps;
delete[] _backwisps;
@@ -480,13 +485,9 @@ void EuphoriaWidget::paintGL()
{
int i;
- static long thisTime = timeGetTime(), lastTime;
+ static double lastTime = timeGetTime();
// update time
- lastTime = thisTime;
- thisTime = timeGetTime();
- if(thisTime >= lastTime)
- elapsedTime = float(thisTime - lastTime) * 0.001f;
- // else use elapsedTime from last frame
-
+ elapsedTime = timeGetTime() - lastTime;
+ lastTime += elapsedTime;
_ec = this;
@@ -501,5 +502,5 @@ void EuphoriaWidget::paintGL()
if(dFeedback)
{
- static float feedbackIntensity = float(dFeedback) / 101.0f;
+ float feedbackIntensity = float(dFeedback) / 101.0f;
// update feedback variables
@@ -625,5 +626,7 @@ void EuphoriaWidget::resizeGL( int w, in
void EuphoriaWidget::initializeGL()
{
- //resizeGL( width(), height() );
+ // Need to call this to setup viewport[] parameters used in
+ // the next updateParameters() call
+ resizeGL( width(), height() );
updateParameters();
@@ -707,4 +710,7 @@ void EuphoriaWidget::updateParameters()
gluBuild2DMipmaps(GL_TEXTURE_2D, 1, TEXSIZE, TEXSIZE, \
GL_LUMINANCE, GL_UNSIGNED_BYTE, linesmap); }
+ } else if ( texName ) {
+ glDeleteTextures( 1, &texName );
+ texName = 0;
}
@@ -719,4 +725,5 @@ void EuphoriaWidget::updateParameters()
// feedback texture setup
glEnable(GL_TEXTURE_2D);
+ delete [] feedbackmap;
feedbackmap = new unsigned char[feedbacktexsize*feedbacktexsize*3];
glGenTextures(1, &feedbacktex);
@@ -736,4 +743,7 @@ void EuphoriaWidget::updateParameters()
lv[1] = float(dFeedbackspeed) * (myRandf(0.0025f) + 0.0025f);
lv[2] = float(dFeedbackspeed) * (myRandf(0.0025f) + 0.0025f);
+ } else if ( feedbacktex ) {
+ glDeleteTextures( 1, &feedbacktex );
+ feedbacktex = 0;
}
--- kdeartwork/kscreensaver/kdesavers/Euphoria.h #1.2:1.3
@@ -65,5 +65,5 @@ private:
float aspectRatio;
int viewport[4];
- float elapsedTime;
+ double elapsedTime;
// feedback texture object
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic