rpms/compiz/F-10 compiz-0.7.6-utility-windows.patch, 1.2, 1.3 compiz-0.7.8-mem-leak-fixes.patch, NONE, 1.1 compiz.spec, 1.140, 1.141

Adel Gadllah drago01 at fedoraproject.org
Fri Dec 5 07:31:47 UTC 2008


Author: drago01

Update of /cvs/pkgs/rpms/compiz/F-10
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv29144

Modified Files:
	compiz.spec 
Added Files:
	compiz-0.7.6-utility-windows.patch 
	compiz-0.7.8-mem-leak-fixes.patch 
Log Message:
more fixes

compiz-0.7.6-utility-windows.patch:

Index: compiz-0.7.6-utility-windows.patch
===================================================================
RCS file: compiz-0.7.6-utility-windows.patch
diff -N compiz-0.7.6-utility-windows.patch
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ compiz-0.7.6-utility-windows.patch	5 Dec 2008 07:31:17 -0000	1.3
@@ -0,0 +1,18 @@
+diff --git a/src/window.c b/src/window.c
+
+--- a/src/window.c
++++ b/src/window.c
+@@ -2920,7 +2920,10 @@ isGroupTransient (CompWindow *w,
+ 
+     if (w->transientFor == None || w->transientFor == w->screen->root)
+     {
+-	if (w->type & (CompWindowTypeDialogMask |
++	if (w->type & (CompWindowTypeUtilMask    |
++		       CompWindowTypeToolbarMask |
++		       CompWindowTypeMenuMask    |
++		       CompWindowTypeDialogMask  |
+ 		       CompWindowTypeModalDialogMask))
+ 	{
+ 	    if (w->clientLeader == clientLeader)
+
+

compiz-0.7.8-mem-leak-fixes.patch:

--- NEW FILE compiz-0.7.8-mem-leak-fixes.patch ---
diff --git a/plugins/blur.c b/plugins/blur.c
index d7da5da..60a1582 100644
--- a/plugins/blur.c
+++ b/plugins/blur.c
@@ -716,7 +716,7 @@ blurWindowUpdate (CompWindow *w,
 				 XA_INTEGER, &actual, &format,
 				 &n, &left, &propData);
 
-    if (result == Success && n && propData)
+    if (result == Success && propData)
     {
 	bw->propSet[state] = TRUE;
 
diff --git a/plugins/decoration.c b/plugins/decoration.c
index 003685f..3ce3615 100644
--- a/plugins/decoration.c
+++ b/plugins/decoration.c
@@ -413,9 +413,15 @@ decorCreateDecoration (CompScreen *screen,
 				 XA_INTEGER, &actual, &format,
 				 &n, &nleft, &data);
 
-    if (result != Success || !n || !data)
+    if (result != Success || !data)
 	return NULL;
 
+    if (!n)
+    {
+	XFree (data);
+	return NULL;
+    }
+
     prop = (long *) data;
 
     if (decor_property_get_version (prop) != decor_version ())
@@ -878,19 +884,23 @@ decorCheckForDmOnScreen (CompScreen *s,
 				 XA_WINDOW, &actual, &format,
 				 &n, &left, &data);
 
-    if (result == Success && n && data)
+    if (result == Success && data)
     {
-	XWindowAttributes attr;
+	if (n)
+	{
+	    XWindowAttributes attr;
 
-	memcpy (&dmWin, data, sizeof (Window));
-	XFree (data);
+	    memcpy (&dmWin, data, sizeof (Window));
 
-	compCheckForError (d->display);
+	    compCheckForError (d->display);
 
-	XGetWindowAttributes (d->display, dmWin, &attr);
+	    XGetWindowAttributes (d->display, dmWin, &attr);
 
-	if (compCheckForError (d->display))
-	    dmWin = None;
+	    if (compCheckForError (d->display))
+		dmWin = None;
+	}
+
+	XFree (data);
     }
 
     if (dmWin != ds->dmWin)
diff --git a/plugins/minimize.c b/plugins/minimize.c
index eb82370..1f8a614 100644
--- a/plugins/minimize.c
+++ b/plugins/minimize.c
@@ -185,23 +185,22 @@ minGetWindowState (CompWindow *w)
     int		  result, format;
     unsigned long n, left;
     unsigned char *data;
+    int           retval = WithdrawnState;
 
     result = XGetWindowProperty (w->screen->display->display, w->id,
 				 w->screen->display->wmStateAtom, 0L, 1L, FALSE,
 				 w->screen->display->wmStateAtom,
 				 &actual, &format, &n, &left, &data);
 
-    if (result == Success && n && data)
+    if (result == Success && data)
     {
-	int state;
+	if (n)
+	    memcpy (&retval, data, sizeof (int));
 
-	memcpy (&state, data, sizeof (int));
 	XFree ((void *) data);
-
-	return state;
     }
 
-    return WithdrawnState;
+    return retval;
 }
 
 static int
diff --git a/plugins/switcher.c b/plugins/switcher.c
index 13be8ad..b2d9777 100644
--- a/plugins/switcher.c
+++ b/plugins/switcher.c
@@ -1056,7 +1056,7 @@ updateForegroundColor (CompScreen *s)
 				 XA_INTEGER, &actual, &format,
 				 &n, &left, &propData);
 
-    if (result == Success && n && propData)
+    if (result == Success && propData)
     {
 	if (n == 3 || n == 4)
 	{
diff --git a/plugins/video.c b/plugins/video.c
index b95eb6b..505a974 100644
--- a/plugins/video.c
+++ b/plugins/video.c
@@ -805,7 +805,7 @@ videoWindowUpdate (CompWindow *w)
 				 XA_INTEGER, &actual, &format,
 				 &n, &left, &propData);
 
-    if (result == Success && n && propData)
+    if (result == Success && propData)
     {
 	if (n == 13)
 	{
diff --git a/src/display.c b/src/display.c
index 23b0ba1..dd4676e 100644
--- a/src/display.c
+++ b/src/display.c
@@ -2767,6 +2767,9 @@ handleSelectionRequest (CompDisplay *display,
 			     event->xselectionrequest.property,
 			     display->atomPairAtom,
 			     32, PropModeReplace, data, num);
+
+	    if (data)
+		XFree (data);
 	}
     }
     else
diff --git a/src/screen.c b/src/screen.c
index 33cb3cc..df7bd18 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -977,7 +977,7 @@ updateScreenBackground (CompScreen  *screen,
 				     &actualType, &actualFormat, &nItems,
 				     &bytesAfter, &prop);
 
-	if (status == Success && nItems && prop)
+	if (status == Success && prop)
 	{
 	    if (actualType   == pixmapAtom &&
 		actualFormat == 32         &&
@@ -1220,13 +1220,16 @@ getDesktopHints (CompScreen *s)
 				     XA_CARDINAL, &actual, &format,
 				     &n, &left, &propData);
 
-	if (result == Success && n && propData)
+	if (result == Success && propData)
 	{
-	    memcpy (data, propData, sizeof (unsigned long));
-	    XFree (propData);
+	    if (n)
+	    {
+		memcpy (data, propData, sizeof (unsigned long));
 
-	    if (data[0] > 0 && data[0] < 0xffffffff)
-		s->nDesktop = data[0];
+		if (data[0] > 0 && data[0] < 0xffffffff)
+		    s->nDesktop = data[0];
+	    }
+	    XFree (propData);
 	}
 
 	result = XGetWindowProperty (s->display->display, s->root,
@@ -1234,13 +1237,17 @@ getDesktopHints (CompScreen *s)
 				     XA_CARDINAL, &actual, &format,
 				     &n, &left, &propData);
 
-	if (result == Success && n && propData)
+	if (result == Success && propData)
 	{
-	    memcpy (data, propData, sizeof (unsigned long));
-	    XFree (propData);
+	    if (n)
+	    {
+		memcpy (data, propData, sizeof (unsigned long));
 
-	    if (data[0] < s->nDesktop)
-		s->currentDesktop = data[0];
+		if (data[0] < s->nDesktop)
+		    s->currentDesktop = data[0];
+	    }
+
+	    XFree (propData);
 	}
     }
 
@@ -1249,7 +1256,7 @@ getDesktopHints (CompScreen *s)
 				 FALSE, XA_CARDINAL, &actual, &format,
 				 &n, &left, &propData);
 
-    if (result == Success && n && propData)
+    if (result == Success && propData)
     {
 	if (n == 2)
 	{
@@ -1270,13 +1277,16 @@ getDesktopHints (CompScreen *s)
 				 XA_CARDINAL, &actual, &format,
 				 &n, &left, &propData);
 
-    if (result == Success && n && propData)
+    if (result == Success && propData)
     {
-	memcpy (data, propData, sizeof (unsigned long));
-	XFree (propData);
+	if (n)
+	{
+	    memcpy (data, propData, sizeof (unsigned long));
 
-	if (data[0])
-	    (*s->enterShowDesktopMode) (s);
+	    if (data[0])
+		(*s->enterShowDesktopMode) (s);
+	}
+	XFree (propData);
     }
 
     data[0] = s->currentDesktop;
@@ -3406,9 +3416,10 @@ getActiveWindow (CompDisplay *display,
 				 XA_WINDOW, &actual, &format,
 				 &n, &left, &data);
 
-    if (result == Success && n && data)
+    if (result == Success && data)
     {
-	memcpy (&w, data, sizeof (Window));
+	if (n)
+	    memcpy (&w, data, sizeof (Window));
 	XFree (data);
     }
 
diff --git a/src/window.c b/src/window.c
index 881bbd5..dfa8bde 100644
--- a/src/window.c
+++ b/src/window.c
@@ -452,11 +452,12 @@ getClientLeader (CompWindow *w)
 				 0L, 1L, False, XA_WINDOW, &actual, &format,
 				 &n, &left, &data);
 
-    if (result == Success && n && data)
+    if (result == Success && data)
     {
-	Window win;
+	Window win = None;
 
-	memcpy (&win, data, sizeof (Window));
+	if (n)
+	    memcpy (&win, data, sizeof (Window));
 	XFree ((void *) data);
 
 	if (win)
@@ -481,11 +482,12 @@ getStartupId (CompWindow *w)
 				 &actual, &format,
 				 &n, &left, &data);
 
-    if (result == Success && n && data)
+    if (result == Success && data)
     {
-	char *id;
+	char *id = NULL;
 
-	id = strdup ((char *) data);
+	if (n)
+	    id = strdup ((char *) data);
 	XFree ((void *) data);
 
 	return id;
@@ -509,9 +511,10 @@ getWmState (CompDisplay *display,
 				 display->wmStateAtom, &actual, &format,
 				 &n, &left, &data);
 
-    if (result == Success && n && data)
+    if (result == Success && data)
     {
-	memcpy (&state, data, sizeof (unsigned long));
+	if (n)
+	    memcpy (&state, data, sizeof (unsigned long));
 	XFree ((void *) data);
     }
 
@@ -908,7 +911,7 @@ unsigned int
 getWindowType (CompDisplay *display,
 	       Window      id)
 {
-    Atom	  actual;
+    Atom	  actual, a = None;
     int		  result, format;
     unsigned long n, left;
     unsigned char *data;
@@ -917,13 +920,16 @@ getWindowType (CompDisplay *display,
 				 0L, 1L, FALSE, XA_ATOM, &actual, &format,
 				 &n, &left, &data);
 
-    if (result == Success && n && data)
+    if (result == Success && data)
     {
-	Atom a;
+	if (n)
+	    memcpy (&a, data, sizeof (Atom));
 
-	memcpy (&a, data, sizeof (Atom));
 	XFree ((void *) data);
+    }
 
+    if (a)
+    {
 	if (a == display->winTypeNormalAtom)
 	    return CompWindowTypeNormalMask;
 	else if (a == display->winTypeMenuAtom)
@@ -1004,7 +1010,7 @@ getMwmHints (CompDisplay  *display,
 				 0L, 20L, FALSE, display->mwmHintsAtom,
 				 &actual, &format, &n, &left, &data);
 
-    if (result == Success && n && data)
+    if (result == Success && data)
     {
 	MwmHints *mwmHints = (MwmHints *) data;
 
@@ -1061,23 +1067,26 @@ getWindowProp (CompDisplay  *display,
     int		  result, format;
     unsigned long n, left;
     unsigned char *data;
+    unsigned int  retval = defaultValue;
 
     result = XGetWindowProperty (display->display, id, property,
 				 0L, 1L, FALSE, XA_CARDINAL, &actual, &format,
 				 &n, &left, &data);
 
-    if (result == Success && n && data)
+    if (result == Success && data)
     {
-	unsigned long value;
+	if (n)
+	{
+	    unsigned long value;
 
-	memcpy (&value, data, sizeof (unsigned long));
+	    memcpy (&value, data, sizeof (unsigned long));
+	    retval = (unsigned int) value;
+	}
 
 	XFree (data);
-
-	return (unsigned int) value;
     }
 
-    return defaultValue;
+    return retval;
 }
 
 void
@@ -1103,25 +1112,27 @@ readWindowProp32 (CompDisplay    *display,
     int		  result, format;
     unsigned long n, left;
     unsigned char *data;
+    Bool          retval = FALSE;
 
     result = XGetWindowProperty (display->display, id, property,
 				 0L, 1L, FALSE, XA_CARDINAL, &actual, &format,
 				 &n, &left, &data);
 
-    if (result == Success && n && data)
+    if (result == Success && data)
     {
-	CARD32 value;
+	if (n)
+	{
+	    CARD32 value;
+	    memcpy (&value, data, sizeof (CARD32));
 
-	memcpy (&value, data, sizeof (CARD32));
+	    retval = TRUE;
+	    *returnValue = value >> 16;
+	}
 
 	XFree (data);
-
-	*returnValue = value >> 16;
-
-	return TRUE;
     }
 
-    return FALSE;
+    return retval;
 }
 
 unsigned short
@@ -1696,7 +1707,7 @@ updateWindowStruts (CompWindow *w)
 				 0L, 12L, FALSE, XA_CARDINAL, &actual, &format,
 				 &n, &left, &data);
 
-    if (result == Success && n && data)
+    if (result == Success && data)
     {
 	unsigned long *struts = (unsigned long *) data;
 
@@ -1742,7 +1753,7 @@ updateWindowStruts (CompWindow *w)
 				     0L, 4L, FALSE, XA_CARDINAL,
 				     &actual, &format, &n, &left, &data);
 
-	if (result == Success && n && data)
+	if (result == Success && data)
 	{
 	    unsigned long *struts = (unsigned long *) data;
 
@@ -2673,6 +2684,10 @@ initializeSyncCounter (CompWindow *w)
 	XSyncDestroyAlarm (w->screen->display->display, w->syncAlarm);
 	w->syncAlarm = None;
     }
+    else if (result == Success && data)
+    {
+	XFree (data);
+    }
 
     return FALSE;
 }
@@ -4657,24 +4672,28 @@ getWindowUserTime (CompWindow *w,
     int		  result, format;
     unsigned long n, left;
     unsigned char *data;
+    Bool          retval = FALSE;
 
     result = XGetWindowProperty (w->screen->display->display, w->id,
 				 w->screen->display->wmUserTimeAtom,
 				 0L, 1L, False, XA_CARDINAL, &actual, &format,
 				 &n, &left, &data);
 
-    if (result == Success && n && data)
+    if (result == Success && data)
     {
-	CARD32 value;
+	if (n)
+	{
+	    CARD32 value;
 
-	memcpy (&value, data, sizeof (CARD32));
-	XFree ((void *) data);
+	    memcpy (&value, data, sizeof (CARD32));
+	    retval = TRUE;
+	    *time = (Time) value;
+	}
 
-	*time = (Time) value;
-	return TRUE;
+	XFree ((void *) data);
     }
 
-    return FALSE;
+    return retval;
 }
 
 void
@@ -4937,7 +4956,7 @@ getWindowIcon (CompWindow *w,
 				     &actual, &format, &n,
 				     &left, &data);
 
-	if (result == Success && n && data)
+	if (result == Success && data)
 	{
 	    CompIcon **pIcon;
 	    CARD32   *p;
diff --git a/gtk/window-decorator/gtk-window-decorator.c b/gtk/window-decorator/gtk-window-decorator.c
index d018a42..3da0d2e 100644
--- a/gtk/window-decorator/gtk-window-decorator.c
+++ b/gtk/window-decorator/gtk-window-decorator.c
@@ -2731,7 +2731,7 @@ get_mwm_prop (Window xwindow)
     if (err != Success || result != Success)
 	return decor;
 
-    if (n && data)
+    if (data)
     {
 	MwmHints *mwm_hints = (MwmHints *) data;



Index: compiz.spec
===================================================================
RCS file: /cvs/pkgs/rpms/compiz/F-10/compiz.spec,v
retrieving revision 1.140
retrieving revision 1.141
diff -u -r1.140 -r1.141
--- compiz.spec	5 Dec 2008 06:58:14 -0000	1.140
+++ compiz.spec	5 Dec 2008 07:31:17 -0000	1.141
@@ -14,7 +14,7 @@
 License:        GPLv2+ and LGPLv2+ and MIT
 Group:          User Interface/Desktops
 Version:        0.7.8
-Release:        1%{?dist}
+Release:        2%{?dist}
 
 Summary:        OpenGL window and compositing manager
 BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
@@ -62,6 +62,7 @@
 #Patch110: scale-key.patch
 # update translations in desktop-effects
 Patch115: desktop-effects-linguas.patch
+Patch116: compiz-0.7.6-utility-windows.patch
 
 # backports from git
 Patch121: compiz-0.7.8-decoration-placement.patch
@@ -69,6 +70,7 @@
 
 # Make sure configuration plugins never get unloaded
 Patch123: compiz-0.7.8-pin-initial-plugins.patch
+Patch124: compiz-0.7.8-mem-leak-fixes.patch
 
 %description
 Compiz is one of the first OpenGL-accelerated compositing window
@@ -143,9 +145,11 @@
 %endif
 #%patch110 -p1 -b .scale-key
 
+%patch116 -p1 -b .utility
 %patch121 -p1 -b .decoration-placement
 %patch122 -p1 -b .fullscreen-top
 %patch123 -p1 -b .initial-plugins
+%patch124 -p1 -b .mem-leaks
 
 %build
 rm -rf $RPM_BUILD_ROOT
@@ -362,7 +366,11 @@
 
 
 %changelog
-* Thu Dec 04 2008 Adel Gadllah <adel.gadllah at gmail.com> - 0.7.8-6
+* Fri Dec 05 2008 Adel Gadllah <adel.gadllah at gmail.com> - 0.7.8-2
+- Readd compiz-0.7.6-utility-windows.patch
+- Fix memory leaks
+
+* Thu Dec 04 2008 Adel Gadllah <adel.gadllah at gmail.com> - 0.7.8-1
 - Update to 0.7.8
 - Dropped patches:
 	compiz-0.7.6-decoration-size.patch




More information about the fedora-extras-commits mailing list