]> Dogcows Code - chaz/openbox/blobdiff - render/render.c
these two changes make the text a lot more readable
[chaz/openbox] / render / render.c
index 2cfb70c766a2082f0e1fa2ebe7488782a30fb2e6..cb29165e7a2d1eded2d4aeab94ceb2a80868231e 100644 (file)
@@ -1,3 +1,22 @@
+/* -*- indent-tabs-mode: nil; tab-width: 4; c-basic-offset: 4; -*-
+
+   render.c for the Openbox window manager
+   Copyright (c) 2003        Ben Jansens
+   Copyright (c) 2003        Derek Foreman
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   See the COPYING file for a copy of the GNU General Public License.
+*/
+
 #include <X11/Xlib.h>
 #include <X11/Xutil.h>
 
@@ -20,7 +39,7 @@ static void pixel_data_to_pixmap(RrAppearance *l,
 
 void RrPaint(RrAppearance *a, Window win, gint w, gint h)
 {
-    int i, transferred = 0, sw;
+    gint i, transferred = 0, sw;
     RrPixel32 *source, *dest;
     Pixmap oldp;
     RrRect tarea; /* area in which to draw textures */
@@ -109,7 +128,9 @@ void RrPaint(RrAppearance *a, Window win, gint w, gint h)
         case RR_TEXTURE_RGBA:
             g_assert(!transferred);
             RrImageDraw(a->surface.pixel_data,
-                        &a->texture[i].data.rgba, &tarea);
+                        &a->texture[i].data.rgba,
+                        a->w, a->h,
+                        &tarea);
         break;
         }
     }
@@ -203,7 +224,6 @@ RrAppearance *RrAppearanceCopy(RrAppearance *orig)
                              orig->textures * sizeof(RrTexture));
     for (i = 0; i < copy->textures; ++i)
         if (copy->texture[i].type == RR_TEXTURE_RGBA) {
-            g_free(copy->texture[i].data.rgba.cache);
             copy->texture[i].data.rgba.cache = NULL;
         }
     copy->pixmap = None;
@@ -258,7 +278,7 @@ static void pixel_data_to_pixmap(RrAppearance *l,
    as reduce_depth just sets im->data = data and returns
 */
     scratch = g_new(RrPixel32, im->width * im->height);
-    im->data = (char*) scratch;
+    im->data = (gchar*) scratch;
     RrReduceDepth(l->inst, in, im);
     XPutImage(RrDisplay(l->inst), out,
               DefaultGC(RrDisplay(l->inst), RrScreen(l->inst)),
@@ -360,8 +380,10 @@ gboolean RrPixmapToRGBA(const RrInstance *inst,
     if (mask) {
         xm = XGetImage(RrDisplay(inst), mask,
                        0, 0, mw, mh, 0xffffffff, ZPixmap);
-        if (!xm)
+        if (!xm) {
+            XDestroyImage(xi);
             return FALSE;
+        }
     }
 
     *data = g_new(RrPixel32, pw * ph);
@@ -382,5 +404,9 @@ gboolean RrPixmapToRGBA(const RrInstance *inst,
     *w = pw;
     *h = ph;
 
+    XDestroyImage(xi);
+    if (mask)
+        XDestroyImage(xm);
+
     return TRUE;
 }
This page took 0.028112 seconds and 4 git commands to generate.