[fusion-commits] compiz mirror: Changes to 'master' (8498de3b0053dd5e777b0c485b16de613d4f222e)
compiz at server.beryl-project.org
compiz at server.beryl-project.org
Thu Jul 12 01:12:18 CEST 2007
New commits:
commit 8498de3b0053dd5e777b0c485b16de613d4f222e
Merge: a5fbfa5647e709786ca5d81575905990d37b1287 ec32ff563fa1c67cdba1f9cde164ea16b33f382d
Author: David Reveman <davidr at novell.com>
Date: Wed Jul 11 18:55:06 2007 -0400
Merge branch 'master' of git+ssh://git.freedesktop.org/git/xorg/app/compiz
commit a5fbfa5647e709786ca5d81575905990d37b1287
Author: David Reveman <davidr at novell.com>
Date: Wed Jul 11 13:02:19 2007 -0400
Clean up and avoid some unnecessary heap allocation in
addDataOpToFunctionData and addBlendOpToFunctionData.
commit 8af1b5a06eb8fff1b5fcb87790c60c7b04df9c03
Author: David Reveman <davidr at novell.com>
Date: Tue Jul 10 23:22:34 2007 -0400
More clean up. Setting d to compDisplays when it's NULL
doesn't make sense. Always using the default logMessage
function when d parameter is NULL is more appropriate
if it should be allowed to call compLogMessage
with d parameter set to NULL at all.
commit dd375d53bf4f009d0918f78bc7d7cda2eaff1471
Author: David Reveman <davidr at novell.com>
Date: Tue Jul 10 23:08:29 2007 -0400
Clean up.
commit f3d450b9147c58cd3810f4b94f750aa30a9585e2
Author: David Reveman <davidr at novell.com>
Date: Tue Jul 10 23:06:43 2007 -0400
Have logLevelToString return a constant string and not
a buffer that needs to be freed. Fixes logging memory leak.
commit 72831592f1eb4148854b695b178029d272b19ca3
Author: David Reveman <davidr at novell.com>
Date: Tue Jul 10 22:57:24 2007 -0400
Make sure logMessage function is initialized before
compLogMessage is called.
commit a771bdf436ee7ca3bda51f200ff0b2f917249b91
Author: David Reveman <davidr at novell.com>
Date: Tue Jul 10 19:05:50 2007 -0400
Fix typo.
commit 0f731e9fb28f484493ca75545c9b9ec223eeab2e
Author: David Reveman <davidr at novell.com>
Date: Tue Jul 10 19:05:10 2007 -0400
Update video interface by adding source dimensions.
commit 5938a207fdc097ea616fcf5d711309c1983e7e3d
Author: David Reveman <davidr at novell.com>
Date: Tue Jul 10 17:06:27 2007 -0400
Fix so that escape can be used again to terminate
"snap top"-functionality.
commit 08317f7ab812a07b1fd0b3c12a58a9c478521be5
Author: David Reveman <davidr at novell.com>
Date: Tue Jul 10 17:04:13 2007 -0400
Clean up.
commit 3c39c285fe5ea1f6d3c249be94d5e5a02021cd64
Author: David Reveman <davidr at novell.com>
Date: Tue Jul 10 15:34:04 2007 -0400
Clean up.
commit f7dcb4022ab7ae30366725252fd74276848c3ef2
Author: David Reveman <davidr at novell.com>
Date: Tue Jul 10 15:30:37 2007 -0400
Select for Expose events on output window.
include/compiz.h | 2 +-
plugins/cube.c | 46 +++++++++++++++++----------------
plugins/rotate.c | 39 ++++++++++++++++-----------
plugins/video.c | 18 +++++++------
src/display.c | 4 +-
src/event.c | 5 +++-
src/fragment.c | 74 +++++++++++++++++++++++++++--------------------------
src/main.c | 46 ++++++++++++---------------------
src/screen.c | 2 +
9 files changed, 121 insertions(+), 115 deletions(-)
Modified: compiz/include/compiz.h
===================================================================
--- compiz/include/compiz.h
+++ compiz/include/compiz.h
@@ -998,7 +998,7 @@ logMessage (CompDisplay *d,
CompLogLevel level,
char *message);
-char *
+const char *
logLevelToString (CompLogLevel level);
int
Modified: compiz/plugins/cube.c
===================================================================
--- compiz/plugins/cube.c
+++ compiz/plugins/cube.c
@@ -277,7 +277,7 @@ cubeUpdateOutputs (CompScreen *s)
cs->nOutput = 1;
return;
}
-
+
if (k != s->nOutputDev)
{
cs->fullscreenOutput = FALSE;
@@ -881,7 +881,8 @@ cubePreparePaintScreen (CompScreen *s,
else if (cs->desktopOpacity != cs->toOpacity)
{
float steps = (msSinceLastPaint * OPAQUE / 1000.0) /
- cs->opt[CUBE_SCREEN_OPTION_FADE_TIME].value.f;
+ cs->opt[CUBE_SCREEN_OPTION_FADE_TIME].value.f;
+
if (steps < 12)
steps = 12;
@@ -946,8 +947,8 @@ cubeDonePaintScreen (CompScreen *s)
static Bool
cubeCheckOrientation (CompScreen *s,
- const ScreenPaintAttrib *sAttrib,
- const CompTransform *transform,
+ const ScreenPaintAttrib *sAttrib,
+ const CompTransform *transform,
CompOutput *outputPtr,
float points[3][3])
{
@@ -1010,7 +1011,6 @@ cubeCheckOrientation (CompScreen *s,
ortho[1] = vecA[2] * vecB[0] - vecA[0] * vecB[2];
ortho[2] = vecA[0] * vecB[1] - vecA[1] * vecB[0];
-
if (ortho[2] > 0.0f)
rv = !rv;
@@ -1038,7 +1038,7 @@ cubeMoveViewportAndPaint (CompScreen *s,
ftb = cs->checkOrientation (s, sAttrib, transform, outputPtr, vPoints);
if ((paintOrder == FTB && !ftb) ||
- (paintOrder == BTF && ftb))
+ (paintOrder == BTF && ftb))
return;
output = (outputPtr->id != ~0) ? outputPtr->id : 0;
@@ -1091,18 +1091,16 @@ cubeMoveViewportAndPaint (CompScreen *s,
static void
cubePaintAllViewports (CompScreen *s,
- ScreenPaintAttrib *sAttrib,
- const CompTransform *transform,
- Region region,
- CompOutput *outputPtr,
- unsigned int mask,
- int xMove,
- float size,
- int hsize,
- PaintOrder paintOrder)
+ ScreenPaintAttrib *sAttrib,
+ const CompTransform *transform,
+ Region region,
+ CompOutput *outputPtr,
+ unsigned int mask,
+ int xMove,
+ float size,
+ int hsize,
+ PaintOrder paintOrder)
{
- CUBE_SCREEN(s);
-
ScreenPaintAttrib sa = *sAttrib;
int i;
@@ -1112,6 +1110,8 @@ cubePaintAllViewports (CompScreen *s,
int iFirstSign; /* 1 if we do xMove += i first and
-1 if we do xMove -= i first. */
+ CUBE_SCREEN (s);
+
if (cs->invert == 1)
{
/* xMove ==> dx for the viewport which is the
@@ -1161,7 +1161,7 @@ cubePaintAllViewports (CompScreen *s,
sa.yRotate -= cs->invert * xMoveAdd * 360.0f / size;
cubeMoveViewportAndPaint (s, &sa, transform, outputPtr, mask,
- paintOrder, xMove);
+ paintOrder, xMove);
sa.yRotate += cs->invert * xMoveAdd * 360.0f / size;
xMove -= xMoveAdd;
@@ -1184,7 +1184,7 @@ cubePaintAllViewports (CompScreen *s,
sa.yRotate -= cs->invert * xMoveAdd * 360.0f / size;
cubeMoveViewportAndPaint (s, &sa, transform, outputPtr, mask,
- paintOrder, xMove);
+ paintOrder, xMove);
sa.yRotate += cs->invert * xMoveAdd * 360.0f / size;
xMove -= xMoveAdd;
@@ -1349,7 +1349,9 @@ cubePaintInside (CompScreen *s,
const ScreenPaintAttrib *sAttrib,
const CompTransform *transform,
CompOutput *output,
- int size) {}
+ int size)
+{
+}
static void
cubePaintTransformedOutput (CompScreen *s,
@@ -1508,7 +1510,7 @@ cubePaintTransformedOutput (CompScreen *s,
glNormal3f (0.0f, -1.0f, 0.0f);
if (cs->desktopOpacity != OPAQUE)
{
- (*cs->paintBottom) (s, &sa, transform, outputPtr, hsize);
+ (*cs->paintBottom) (s, &sa, transform, outputPtr, hsize);
glNormal3f (0.0f, 0.0f, -1.0f);
(*cs->paintInside) (s, &sa, transform, outputPtr, hsize);
glNormal3f (0.0f, -1.0f, 0.0f);
@@ -1520,7 +1522,7 @@ cubePaintTransformedOutput (CompScreen *s,
glNormal3f (0.0f, 1.0f, 0.0f);
if (cs->desktopOpacity != OPAQUE)
{
- (*cs->paintTop) (s, &sa, transform, outputPtr, hsize);
+ (*cs->paintTop) (s, &sa, transform, outputPtr, hsize);
glNormal3f (0.0f, 0.0f, -1.0f);
(*cs->paintInside) (s, &sa, transform, outputPtr, hsize);
glNormal3f (0.0f, 1.0f, 0.0f);
Modified: compiz/plugins/rotate.c
===================================================================
--- compiz/plugins/rotate.c
+++ compiz/plugins/rotate.c
@@ -225,7 +225,7 @@ adjustVelocity (RotateScreen *rs,
rs->xVelocity = (amount * rs->xVelocity + adjust) / (amount + 2.0f);
- if (rs->opt[ROTATE_SCREEN_OPTION_SNAP_TOP].value.b && rs->yrot > 50.0f)
+ if (rs->snapTop && rs->yrot > 50.0f)
yrot = -(90.f - rs->yrot);
else
yrot = rs->yrot;
@@ -414,37 +414,43 @@ rotatePreparePaintScreen (CompScreen *s,
if (rs->moving && cs->invert == 1 && !cs->unfolded)
{
- if (fabs(rs->xrot + rs->baseXrot + rs->moveTo) <=
+ if (fabs (rs->xrot + rs->baseXrot + rs->moveTo) <=
(360.0 / (s->hsize * 2.0)))
+ {
rs->zoomTranslate = rs->opt[ROTATE_SCREEN_OPTION_ZOOM].value.f *
- fabs(rs->xrot + rs->baseXrot + rs->moveTo) /
+ fabs (rs->xrot + rs->baseXrot + rs->moveTo) /
(360.0 / (s->hsize * 2.0));
- else if (fabs(rs->xrot + rs->baseXrot) <= (360.0 / (s->hsize * 2.0)))
+ }
+ else if (fabs (rs->xrot + rs->baseXrot) <= (360.0 / (s->hsize * 2.0)))
+ {
rs->zoomTranslate = rs->opt[ROTATE_SCREEN_OPTION_ZOOM].value.f *
- fabs(rs->xrot + rs->baseXrot) /
+ fabs (rs->xrot + rs->baseXrot) /
(360.0 / (s->hsize * 2.0));
+ }
else
{
rs->zoomTranslate += fabs (rs->xrot + rs->baseXrot - oldXrot) /
(360.0 / (s->hsize * 2.0)) *
rs->opt[ROTATE_SCREEN_OPTION_ZOOM].value.f;
- rs->zoomTranslate = MIN (rs->zoomTranslate,
- rs->opt[ROTATE_SCREEN_OPTION_ZOOM].value.f);
+ rs->zoomTranslate =
+ MIN (rs->zoomTranslate,
+ rs->opt[ROTATE_SCREEN_OPTION_ZOOM].value.f);
}
}
else if ((rs->zoomTranslate != 0.0f || rs->grabbed) && cs->invert == 1 &&
!cs->unfolded)
{
- int steps, stepsCount;
+ int steps, stepsCount;
float amount, chunk;
-
+
amount = msSinceLastPaint * 0.05f *
- rs->opt[ROTATE_SCREEN_OPTION_SPEED].value.f;
- steps = stepsCount = amount / (0.5f *
- rs->opt[ROTATE_SCREEN_OPTION_TIMESTEP].value.f);
+ rs->opt[ROTATE_SCREEN_OPTION_SPEED].value.f;
+ steps = stepsCount = amount /
+ (0.5f * rs->opt[ROTATE_SCREEN_OPTION_TIMESTEP].value.f);
if (!steps)
- steps = stepsCount = 1;
- chunk = amount / (float)steps;
+ steps = stepsCount = 1;
+
+ chunk = amount / (float) steps;
while (steps--)
{
@@ -457,7 +463,7 @@ rotatePreparePaintScreen (CompScreen *s,
dt = 0.0f - rs->zoomTranslate;
adjust = dt * 0.15f;
- tamount = fabs(dt) * 1.5f;
+ tamount = fabs (dt) * 1.5f;
if (tamount < 0.2f)
tamount = 0.2f;
else if (tamount > 2.0f)
@@ -466,13 +472,14 @@ rotatePreparePaintScreen (CompScreen *s,
rs->zoomVelocity = (tamount * rs->zoomVelocity + adjust) /
(tamount + 1.0f);
- if (fabs(dt) < 0.1f && fabs(rs->zoomVelocity) < 0.0005f)
+ if (fabs (dt) < 0.1f && fabs (rs->zoomVelocity) < 0.0005f)
{
if (rs->grabbed)
rs->zoomTranslate =
rs->opt[ROTATE_SCREEN_OPTION_ZOOM].value.f;
else
rs->zoomTranslate = 0.0f;
+
break;
}
rs->zoomTranslate += rs->zoomVelocity * chunk;
Modified: compiz/plugins/video.c
===================================================================
--- compiz/plugins/video.c
+++ compiz/plugins/video.c
@@ -440,7 +440,7 @@ videoDrawWindowTexture (CompWindow *w,
(*s->programEnvParameter4f) (GL_FRAGMENT_PROGRAM_ARB, param,
minX, minY, maxX, maxY);
- /* need tp provide plane offsets when texture coordinates
+ /* need to provide plane offsets when texture coordinates
are not normalized */
if (texture->target != GL_TEXTURE_2D)
{
@@ -791,6 +791,8 @@ videoWindowUpdate (CompWindow *w)
int aspectX = 0;
int aspectY = 0;
int panScan = 0;
+ int width = 0;
+ int height = 0;
VIDEO_DISPLAY (w->screen->display);
VIDEO_SCREEN (w->screen);
@@ -799,19 +801,22 @@ videoWindowUpdate (CompWindow *w)
memset (p, 0, sizeof (p));
result = XGetWindowProperty (w->screen->display->display, w->id,
- vd->videoAtom, 0L, 11L, FALSE,
+ vd->videoAtom, 0L, 13L, FALSE,
XA_INTEGER, &actual, &format,
&n, &left, &propData);
if (result == Success && n && propData)
{
- if (n == 11)
+ if (n == 13)
{
long *data = (long *) propData;
pixmap = *data++;
imageFormat = *data++;
+ width = *data++;
+ height = *data++;
+
aspectX = *data++;
aspectY = *data++;
panScan = *data++;
@@ -867,17 +872,14 @@ videoWindowUpdate (CompWindow *w)
vw->source->format = i;
vw->source->p1 = p[0];
vw->source->p2 = p[1];
- vw->source->width = texture->width;
- vw->source->height = texture->height;
+ vw->source->width = width;
+ vw->source->height = height;
vw->source->aspect = aspectX && aspectY;
vw->source->panScan = panScan / 65536.0f;
if (vw->source->aspect)
vw->source->aspectRatio = (float) aspectX / aspectY;
- if (i == IMAGE_FORMAT_YV12)
- vw->source->height -= texture->height / 3;
-
updateWindowVideoContext (w, vw->source);
}
else
Modified: compiz/src/display.c
===================================================================
--- compiz/src/display.c
+++ compiz/src/display.c
@@ -1979,6 +1979,8 @@ addDisplay (char *name)
d->autoRaiseHandle = 0;
d->autoRaiseWindow = None;
+ d->logMessage = logMessage;
+
d->display = dpy = XOpenDisplay (name);
if (!d->display)
{
@@ -2025,8 +2027,6 @@ addDisplay (char *name)
d->matchExpHandlerChanged = matchExpHandlerChanged;
d->matchPropertyChanged = matchPropertyChanged;
- d->logMessage = logMessage;
-
d->supportedAtom = XInternAtom (dpy, "_NET_SUPPORTED", 0);
d->supportingWmCheckAtom = XInternAtom (dpy, "_NET_SUPPORTING_WM_CHECK", 0);
Modified: compiz/src/event.c
===================================================================
--- compiz/src/event.c
+++ compiz/src/event.c
@@ -1183,7 +1183,10 @@ handleEvent (CompDisplay *d,
switch (event->type) {
case Expose:
- s = findScreenAtDisplay (d, event->xexpose.window);
+ for (s = d->screens; s; s = s->next)
+ if (s->output == event->xexpose.window)
+ break;
+
if (s)
{
int more = event->xexpose.count + 1;
Modified: compiz/src/fragment.c
===================================================================
--- compiz/src/fragment.c
+++ compiz/src/fragment.c
@@ -34,8 +34,6 @@
#define COMP_FUNCTION_ARB_MASK (1 << 0)
#define COMP_FUNCTION_MASK (COMP_FUNCTION_ARB_MASK)
-#define BUFFER_SIZE 1024
-
struct _CompProgram {
struct _CompProgram *next;
@@ -1037,7 +1035,7 @@ addDataOpToFunctionData (CompFunctionData *data,
...)
{
int ===================================================================
- int size = BUFFER_SIZE;
+ int size = strlen (str) + 1;
int n;
char *fStr;
char *tmp;
@@ -1046,39 +1044,41 @@ addDataOpToFunctionData (CompFunctionData *data,
if (!allocBodyOpInFunctionData (data))
return FALSE;
- if ((fStr = malloc (size)) == NULL)
+ fStr = malloc (size);
+ if (!fStr)
return FALSE;
while (1)
{
/* Try to print in the allocated space. */
- va_start(ap, str);
+ va_start (ap, str);
n = vsnprintf (fStr, size, str, ap);
- va_end(ap);
-
+ va_end (ap);
+
/* If that worked, leave the loop. */
if (n > -1 && n < size)
break;
-
+
/* Else try again with more space. */
- if (n > -1) /* glibc 2.1 */
- size = n+1; /* precisely what is needed */
- else /* glibc 2.0 */
- size *= 2; /* twice the old size */
-
- if ((tmp = realloc (fStr, size)) == NULL)
+ if (n > -1) /* glibc 2.1 */
+ size = n + 1; /* precisely what is needed */
+ else /* glibc 2.0 */
+ size++; /* one more than the old size */
+
+ tmp = realloc (fStr, size);
+ if (!tmp)
{
- free(fStr);
+ free (fStr);
return FALSE;
- } else {
+ }
+ else
+ {
fStr = tmp;
}
}
data->body[index].type = CompOpTypeData;
- data->body[index].data.data = strdup (fStr);
-
- free (fStr);
+ data->body[index].data.data = fStr;
return TRUE;
}
@@ -1089,7 +1089,7 @@ addBlendOpToFunctionData (CompFunctionData *data,
...)
{
int ===================================================================
- int size = BUFFER_SIZE;
+ int size = strlen (str) + 1;
int n;
char *fStr;
char *tmp;
@@ -1098,39 +1098,41 @@ addBlendOpToFunctionData (CompFunctionData *data,
if (!allocBodyOpInFunctionData (data))
return FALSE;
- if ((fStr = malloc (size)) == NULL)
+ fStr = malloc (size);
+ if (!fStr)
return FALSE;
while (1)
{
/* Try to print in the allocated space. */
- va_start(ap, str);
+ va_start (ap, str);
n = vsnprintf (fStr, size, str, ap);
- va_end(ap);
-
+ va_end (ap);
+
/* If that worked, leave the loop. */
if (n > -1 && n < size)
break;
-
+
/* Else try again with more space. */
- if (n > -1) /* glibc 2.1 */
- size = n+1; /* precisely what is needed */
- else /* glibc 2.0 */
- size *= 2; /* twice the old size */
-
- if ((tmp = realloc (fStr, size)) == NULL)
+ if (n > -1) /* glibc 2.1 */
+ size = n + 1; /* precisely what is needed */
+ else /* glibc 2.0 */
+ size++; /* one more than the old size */
+
+ tmp = realloc (fStr, size);
+ if (!tmp)
{
- free(fStr);
+ free (fStr);
return FALSE;
- } else {
+ }
+ else
+ {
fStr = tmp;
}
}
data->body[index].type = CompOpTypeDataBlend;
- data->body[index].data.data = strdup (fStr);
-
- free (fStr);
+ data->body[index].data.data = fStr;
return TRUE;
}
Modified: compiz/src/main.c
===================================================================
--- compiz/src/main.c
+++ compiz/src/main.c
@@ -100,73 +100,61 @@ usage (void)
void
compLogMessage (CompDisplay *d,
- char *componentName,
+ char *componentName,
CompLogLevel level,
- char *format,
+ char *format,
...)
{
va_list args;
char message[2048];
- if (!d)
- d = compDisplays;
-
va_start (args, format);
vsnprintf (message, 2048, format, args);
- if (!d)
- logMessage (d, componentName, level, message);
- else
+ if (d)
(*d->logMessage) (d, componentName, level, message);
+ else
+ logMessage (d, componentName, level, message);
va_end (args);
}
void
-logMessage (CompDisplay *d,
- char *componentName,
+logMessage (CompDisplay *d,
+ char *componentName,
CompLogLevel level,
- char *message)
+ char *message)
{
char defaultMessage[2048];
snprintf (defaultMessage, 2048, "%s (%s) - %s: %s",
- programName, componentName,
+ programName, componentName,
logLevelToString (level), message);
fprintf (stderr, defaultMessage);
fprintf (stderr, "\n");
}
-char *
+const char *
logLevelToString (CompLogLevel level)
{
- char *logStr;
-
- switch (level)
- {
+ switch (level) {
case CompLogLevelFatal:
- logStr = strdup ("Fatal");
- break;
+ return "Fatal";
case CompLogLevelError:
- logStr = strdup ("Error");
- break;
+ return "Error";
case CompLogLevelWarn:
- logStr = strdup ("Warn");
- break;
+ return "Warn";
case CompLogLevelInfo:
- logStr = strdup ("Info");
- break;
+ return "Info";
case CompLogLevelDebug:
- logStr = strdup ("Debug");
- break;
+ return "Debug";
default:
- logStr = strdup ("Unknown");
break;
}
- return logStr;
+ return "Unknown";
}
static void
Modified: compiz/src/screen.c
===================================================================
--- compiz/src/screen.c
+++ compiz/src/screen.c
@@ -1269,6 +1269,8 @@ makeOutputWindow (CompScreen *s)
{
s->overlay = XCompositeGetOverlayWindow (s->display->display, s->root);
s->output = s->overlay;
+
+ XSelectInput (s->display->display, s->output, ExposureMask);
}
else
#endif
More information about the commits
mailing list