drw: cleanup drw_text, prevent gcc warning false-positive of unused var 44b242c7
... we don't allow passing text is NULL anymore either, for that behaviour
just use drw_rect() (it is used in dwm).
Hiltjo Posthuma · 2015-10-20 22:56 1 file(s) · +14 −21
drw.c +14 −21
224 224
	char buf[1024];
225 225
	int tx, ty, th;
226 226
	Extnts tex;
227 -
	Colormap cmap;
228 -
	Visual *vis;
229 -
	XftDraw *d;
227 +
	XftDraw *d = NULL;
230 228
	Fnt *curfont, *nextfont;
231 229
	size_t i, len;
232 230
	int utf8strlen, utf8charlen, render;
238 236
	XftResult result;
239 237
	int charexists = 0;
240 238
241 -
	if (!(render = x || y || w || h))
242 -
		w = ~w;
243 -
244 -
	if (!drw || !drw->scheme) {
239 +
	if (!drw->scheme || !drw->fontcount)
245 240
		return 0;
246 -
	} else if (render) {
247 -
		XSetForeground(drw->dpy, drw->gc, invert ? drw->scheme->fg->pix : drw->scheme->bg->pix);
248 -
		XFillRectangle(drw->dpy, drw->drawable, drw->gc, x, y, w, h);
249 -
	}
250 241
251 -
	if (!text || !drw->fontcount) {
252 -
		return 0;
253 -
	} else if (render) {
254 -
		cmap = DefaultColormap(drw->dpy, drw->screen);
255 -
		vis = DefaultVisual(drw->dpy, drw->screen);
256 -
		d = XftDrawCreate(drw->dpy, drw->drawable, vis, cmap);
242 +
	if (!(render = x || y || w || h)) {
243 +
		w = ~w;
244 +
	} else {
245 +
		XSetForeground(drw->dpy, drw->gc, invert ?
246 +
		               drw->scheme->fg->pix : drw->scheme->bg->pix);
247 +
		XFillRectangle(drw->dpy, drw->drawable, drw->gc, x, y, w, h);
248 +
		d = XftDrawCreate(drw->dpy, drw->drawable,
249 +
		                  DefaultVisual(drw->dpy, drw->screen),
250 +
		                  DefaultColormap(drw->dpy, drw->screen));
257 251
	}
258 252
259 253
	curfont = drw->fonts[0];
325 319
			if (!drw->fonts[0]->pattern) {
326 320
				/* Refer to the comment in drw_font_xcreate for more
327 321
				 * information. */
328 -
				die("The first font in the cache must be loaded from a font string.\n");
322 +
				die("the first font in the cache must be loaded from a font string.\n");
329 323
			}
330 324
331 325
			fcpattern = FcPatternDuplicate(drw->fonts[0]->pattern);
344 338
				if (curfont && XftCharExists(drw->dpy, curfont->xfont, utf8codepoint)) {
345 339
					drw->fonts[drw->fontcount++] = curfont;
346 340
				} else {
347 -
					if (curfont)
348 -
						drw_font_free(curfont);
341 +
					drw_font_free(curfont);
349 342
					curfont = drw->fonts[0];
350 343
				}
351 344
			}
352 345
		}
353 346
	}
354 -
	if (render)
347 +
	if (d)
355 348
		XftDrawDestroy(d);
356 349
357 350
	return x;