summaryrefslogtreecommitdiff
path: root/render
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2003-03-17 00:18:03 +0000
committerDana Jansens <danakj@orodu.net>2003-03-17 00:18:03 +0000
commit3232247b0c36cf1b5b5e11c8cb03c8e0c457abdd (patch)
treed626a01ffeab88bda1f696bfd0965101bba71c82 /render
parent717c0fa62c1a725b6cb2903574ef9738bd6df0c3 (diff)
dont delete the pixmap until after changeing the visible one
Diffstat (limited to 'render')
-rw-r--r--render/render.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/render/render.c b/render/render.c
index ebd681ea..ac5e0023 100644
--- a/render/render.c
+++ b/render/render.c
@@ -57,13 +57,14 @@ void x_paint(Window win, Appearance *l, int w, int h)
{
int i;
XImage *im;
+ Pixmap oldp;
if (w <= 0 || h <= 0) return;
g_assert(l->surface.type == Surface_Planar);
// printf("painting window %ld\n", win);
- if (l->pixmap != None) XFreePixmap(ob_display, l->pixmap);
+ oldp = l->pixmap; /* save to free after changing the visible pixmap */
l->pixmap = XCreatePixmap(ob_display, ob_root, w, h, render_depth);
g_assert(l->pixmap != None);
@@ -105,6 +106,7 @@ void x_paint(Window win, Appearance *l, int w, int h)
}
XSetWindowBackgroundPixmap(ob_display, win, l->pixmap);
XClearWindow(ob_display, win);
+ if (oldp != None) XFreePixmap(ob_display, oldp);
}
/*