diff options
-rw-r--r-- | st.c | 22 |
1 files changed, 15 insertions, 7 deletions
@@ -203,7 +203,7 @@ typedef struct { Display *dpy; Colourmap cmap; Window win; - XdbeBackBuffer buf; + Drawable buf; Atom xembed, wmdeletewin; XIM xim; XIC xic; @@ -414,6 +414,8 @@ static char *opt_embed = NULL; static char *opt_class = NULL; static char *opt_font = NULL; +bool usedbe = False; + static char *usedfont = NULL; static int usedfontsize = 0; @@ -2500,7 +2502,8 @@ xinit(void) { | ButtonMotionMask | ButtonPressMask | ButtonReleaseMask; attrs.colormap = xw.cmap; - parent = opt_embed ? strtol(opt_embed, NULL, 0) : XRootWindow(xw.dpy, xw.scr); + parent = opt_embed ? strtol(opt_embed, NULL, 0) : \ + XRootWindow(xw.dpy, xw.scr); xw.win = XCreateWindow(xw.dpy, parent, xw.fx, xw.fy, xw.w, xw.h, 0, XDefaultDepth(xw.dpy, xw.scr), InputOutput, xw.vis, @@ -2509,12 +2512,16 @@ xinit(void) { &attrs); /* double buffering */ - if(!XdbeQueryExtension(xw.dpy, &major, &minor)) - die("Xdbe extension is not present\n"); - xw.buf = XdbeAllocateBackBufferName(xw.dpy, xw.win, XdbeBackground); + if(XdbeQueryExtension(xw.dpy, &major, &minor)) { + xw.buf = XdbeAllocateBackBufferName(xw.dpy, xw.win, + XdbeBackground); + usedbe = True; + } else { + xw.buf = xw.win; + } /* Xft rendering context */ - xw.draw = XftDrawCreate(xw.dpy, xw.buf, xw.vis, xw.cmap); + xw.draw = XftDrawCreate(xw.dpy, xw.win, xw.vis, xw.cmap); /* input methods */ if((xw.xim = XOpenIM(xw.dpy, NULL, NULL, NULL)) == NULL) { @@ -2822,7 +2829,8 @@ draw(void) { XdbeSwapInfo swpinfo[1] = {{xw.win, XdbeCopied}}; drawregion(0, 0, term.col, term.row); - XdbeSwapBuffers(xw.dpy, swpinfo, 1); + if(usedbe) + XdbeSwapBuffers(xw.dpy, swpinfo, 1); } void |