X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=render%2Frender.c;h=cb29165e7a2d1eded2d4aeab94ceb2a80868231e;hb=1c9a69e1df14f9dc571d739b2acfd9c09b5b7fd7;hp=2cfb70c766a2082f0e1fa2ebe7488782a30fb2e6;hpb=e9c1e44e680e8f4ddaf3622c287e419d488256eb;p=chaz%2Fopenbox diff --git a/render/render.c b/render/render.c index 2cfb70c7..cb29165e 100644 --- a/render/render.c +++ b/render/render.c @@ -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 #include @@ -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; }