X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=render%2Frender.c;h=a41614051dc3c5e0974645927d32e87a84f99c0a;hb=fd0b9f760ab69c9e78f522ad0a9fe5d41152a382;hp=95c5095b48647e1f7b3f622bdcf784186635a9ac;hpb=4cbfe3eac0570679ae3a8e5c4df20e06d5418573;p=chaz%2Fopenbox diff --git a/render/render.c b/render/render.c index 95c5095b..a4161405 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 */ @@ -259,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)), @@ -292,7 +311,7 @@ void RrMargins (RrAppearance *a, gint *l, gint *t, gint *r, gint *b) void RrMinsize(RrAppearance *a, gint *w, gint *h) { gint i; - gint m; + RrSize *m; gint l, t, r, b; *w = *h = 0; @@ -307,9 +326,9 @@ void RrMinsize(RrAppearance *a, gint *w, gint *h) case RR_TEXTURE_TEXT: m = RrFontMeasureString(a->texture[i].data.text.font, a->texture[i].data.text.string); - *w = MAX(*w, m); - m = RrFontHeight(a->texture[i].data.text.font); - *h += MAX(*h, m); + *w = MAX(*w, m->width + 4); + m->height = RrFontHeight(a->texture[i].data.text.font); + *h += MAX(*h, m->height); break; case RR_TEXTURE_RGBA: *w += MAX(*w, a->texture[i].data.rgba.width); @@ -361,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); @@ -383,5 +404,9 @@ gboolean RrPixmapToRGBA(const RrInstance *inst, *w = pw; *h = ph; + XDestroyImage(xi); + if (mask) + XDestroyImage(xm); + return TRUE; }