cogl-util: Add an internal wrapper for the ffs function
The ffs function is defined in C99 so if we want to use it in Cogl we need to provide a fallback for MSVC. This adds a configure check for the function and then a fallback using a while loop if it is not available. http://bugzilla.clutter-project.org/show_bug.cgi?id=2491
This commit is contained in:
parent
91c1602306
commit
b3058c097d
@ -218,3 +218,24 @@ _cogl_util_one_at_a_time_mix (unsigned int hash)
|
||||
return hash;
|
||||
}
|
||||
|
||||
/* The 'ffs' function is part of C99 so it isn't always available */
|
||||
#ifndef HAVE_FFS
|
||||
|
||||
int
|
||||
_cogl_util_ffs (int num)
|
||||
{
|
||||
int i = 1;
|
||||
|
||||
if (num == 0)
|
||||
return 0;
|
||||
|
||||
while ((num & 1) == 0)
|
||||
{
|
||||
num >>= 1;
|
||||
i++;
|
||||
}
|
||||
|
||||
return i;
|
||||
}
|
||||
|
||||
#endif /* HAVE_FFS */
|
||||
|
@ -95,4 +95,12 @@ _cogl_util_one_at_a_time_hash (unsigned int hash,
|
||||
unsigned int
|
||||
_cogl_util_one_at_a_time_mix (unsigned int hash);
|
||||
|
||||
/* The 'ffs' function is part of C99 so it isn't always available */
|
||||
#ifdef HAVE_FFS
|
||||
#define _cogl_util_ffs ffs
|
||||
#else
|
||||
int
|
||||
_cogl_util_ffs (int num);
|
||||
#endif
|
||||
|
||||
#endif /* __COGL_UTIL_H */
|
||||
|
@ -94,6 +94,10 @@ AC_MSG_RESULT([$platform_win32])
|
||||
AC_SUBST(CLUTTER_LT_VERSION)
|
||||
AC_SUBST(CLUTTER_LT_LDFLAGS)
|
||||
|
||||
dnl The 'ffs' function is part of C99 so it isn't always
|
||||
dnl available. Cogl has a fallback if needed.
|
||||
AC_CHECK_FUNCS([ffs])
|
||||
|
||||
dnl ========================================================================
|
||||
|
||||
# Checks for programs.
|
||||
|
Loading…
Reference in New Issue
Block a user