all repos — openbox @ 4a9b25ad58d9098bf55d04ca907f2f3865dea7e0

openbox fork - make it a bit more like ryudo

give the compiler hints about what can be kept in registers so that it can optimize the gradient code better with all the pointers going on
Dana Jansens danakj@orodu.net
commit

4a9b25ad58d9098bf55d04ca907f2f3865dea7e0

parent

5b678bdfcf9e21c846d6560badd009484d174a89

1 files changed, 20 insertions(+), 18 deletions(-)

jump to
M render/gradient.crender/gradient.c

@@ -41,7 +41,7 @@ {

RrPixel32 *data = a->surface.pixel_data; RrPixel32 current; guint r,g,b; - gint off, x; + register gint off, x; switch (a->surface.grad) { case RR_SURFACE_PARENTREL:

@@ -136,7 +136,7 @@ }

static void highlight(RrSurface *s, RrPixel32 *x, RrPixel32 *y, gboolean raised) { - gint r, g, b; + register gint r, g, b; RrPixel32 *up, *down; if (raised) {

@@ -171,7 +171,7 @@ }

static void create_bevel_colors(RrAppearance *l) { - gint r, g, b; + register gint r, g, b; /* light color */ r = l->surface.primary->r;

@@ -205,7 +205,7 @@ element

*/ static inline void repeat_pixel(RrPixel32 *start, gint w) { - gint x; + register gint x; RrPixel32 *dest; dest = start + 1;

@@ -268,7 +268,8 @@

static void gradient_parentrelative(RrAppearance *a, gint w, gint h) { RrPixel32 *source, *dest; - gint sw, sh, partial_w, partial_h, i; + gint sw, sh, partial_w, partial_h; + register gint i; g_assert (a->surface.parent); g_assert (a->surface.parent->w);

@@ -318,7 +319,7 @@ }

static void gradient_solid(RrAppearance *l, gint w, gint h) { - gint i; + register gint i; RrPixel32 pix; RrPixel32 *data = l->surface.pixel_data; RrSurface *sp = &l->surface;

@@ -414,9 +415,10 @@ }

/* * * * * * * * * * * * * * GRADIENT MAGIC WOOT * * * * * * * * * * * * * * */ -#define VARS(x) \ - guint color##x[3]; \ - gint len##x, cdelta##x[3], error##x[3] = { 0, 0, 0 }, inc##x[3]; \ +#define VARS(x) \ + register gint len##x; \ + guint color##x[3]; \ + gint cdelta##x[3], error##x[3] = { 0, 0, 0 }, inc##x[3]; \ gboolean bigslope##x[3] /* color slope > 1 */ #define SETUP(x, from, to, w) \

@@ -464,7 +466,7 @@ (inc##x[i])

#define NEXT(x) \ { \ - gint i; \ + register gint i; \ for (i = 2; i >= 0; --i) { \ if (!cdelta##x[i]) continue; \ \

@@ -491,10 +493,10 @@ }

static void gradient_splitvertical(RrAppearance *a, gint w, gint h) { - gint y1, y2, y3; + register gint y1, y2, y3; RrSurface *sf = &a->surface; RrPixel32 *data; - gint y1sz, y2sz, y3sz; + register gint y1sz, y2sz, y3sz; VARS(y1); VARS(y2);

@@ -556,7 +558,7 @@ }

static void gradient_horizontal(RrSurface *sf, gint w, gint h) { - gint x, y, cpbytes; + register gint x, y, cpbytes; RrPixel32 *data = sf->pixel_data, *datav; gchar *datac;

@@ -588,7 +590,7 @@ }

static void gradient_mirrorhorizontal(RrSurface *sf, gint w, gint h) { - gint x, y, half1, half2, cpbytes; + register gint x, y, half1, half2, cpbytes; RrPixel32 *data = sf->pixel_data, *datav; gchar *datac;

@@ -635,7 +637,7 @@ }

static void gradient_vertical(RrSurface *sf, gint w, gint h) { - gint y; + register gint y; RrPixel32 *data; VARS(y);

@@ -661,7 +663,7 @@ }

static void gradient_diagonal(RrSurface *sf, gint w, gint h) { - gint x, y; + register gint x, y; RrPixel32 *data = sf->pixel_data; RrColor left, right; RrColor extracorner;

@@ -708,7 +710,7 @@ }

static void gradient_crossdiagonal(RrSurface *sf, gint w, gint h) { - gint x, y; + register gint x, y; RrPixel32 *data = sf->pixel_data; RrColor left, right; RrColor extracorner;

@@ -759,7 +761,7 @@ RrPixel32 *ldata, *rdata;

RrPixel32 *cp; RrColor left, right; RrColor extracorner; - gint x, y, halfw, halfh, midx, midy; + register gint x, y, halfw, halfh, midx, midy; VARS(lefty); VARS(righty);