aboutsummaryrefslogtreecommitdiff
path: root/nx-X11/lib/src/GetImage.c
diff options
context:
space:
mode:
Diffstat (limited to 'nx-X11/lib/src/GetImage.c')
-rw-r--r--nx-X11/lib/src/GetImage.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/nx-X11/lib/src/GetImage.c b/nx-X11/lib/src/GetImage.c
index 96d9ce337..c6e6e633a 100644
--- a/nx-X11/lib/src/GetImage.c
+++ b/nx-X11/lib/src/GetImage.c
@@ -34,15 +34,24 @@ in this Software without prior written authorization from The Open Group.
#define ROUNDUP(nbytes, pad) (((((nbytes) - 1) + (pad)) / (pad)) * (pad))
-static unsigned int Ones( /* HACKMEM 169 */
- unsigned long mask)
+#ifdef HAVE___BUILTIN_POPCOUNTL
+# define Ones __builtin_popcountl
+#else
+/*
+ * Count the number of bits set to 1 in a 32-bit word.
+ * Algorithm from MIT AI Lab Memo 239: "HAKMEM", ITEM 169.
+ * http://dspace.mit.edu/handle/1721.1/6086
+ */
+static inline unsigned int
+Ones(unsigned long mask)
{
register unsigned long y;
- y = (mask >> 1) &033333333333;
+ y = (mask >> 1) & 033333333333;
y = mask - y - ((y >>1) & 033333333333);
return ((unsigned int) (((y + (y >> 3)) & 030707070707) % 077));
}
+#endif
XImage *XGetImage (
register Display *dpy,