Merge branch 'master' of git://factorcode.org/git/factor

db4
Slava Pestov 2009-05-05 10:35:13 -05:00
commit 8486e6db82
2 changed files with 10 additions and 5 deletions

View File

@ -92,11 +92,16 @@ PREDICATE: fragment-shader < gl-shader (fragment-shader?) ;
: gl-program-shaders-length ( program -- shaders-length ) : gl-program-shaders-length ( program -- shaders-length )
GL_ATTACHED_SHADERS gl-program-get-int ; inline GL_ATTACHED_SHADERS gl-program-get-int ; inline
! On some macosx-x86-64 graphics drivers, glGetAttachedShaders tries to treat the
! shaders parameter as a ulonglong array rather than a GLuint array as documented.
! We hack around this by allocating a buffer twice the size and sifting out the zero
! values
: gl-program-shaders ( program -- shaders ) : gl-program-shaders ( program -- shaders )
dup gl-program-shaders-length dup gl-program-shaders-length 2 *
0 <int> 0 <int>
over <uint-array> over <uint-array>
[ glGetAttachedShaders ] keep ; [ glGetAttachedShaders ] keep [ zero? not ] filter ;
: delete-gl-program-only ( program -- ) : delete-gl-program-only ( program -- )
glDeleteProgram ; inline glDeleteProgram ; inline

View File

@ -12,12 +12,12 @@ CONSTANT: crc32-table V{ }
256 iota [ 256 iota [
8 [ 8 [
[ 2/ ] [ even? ] bi [ crc32-polynomial bitxor ] unless [ 2/ ] [ even? ] bi [ crc32-polynomial bitxor ] unless
] times >bignum ] times
] map 0 crc32-table copy ] map 0 crc32-table copy
: (crc32) ( crc ch -- crc ) : (crc32) ( crc ch -- crc )
>bignum dupd bitxor dupd bitxor
mask-byte crc32-table nth-unsafe >bignum mask-byte crc32-table nth-unsafe
swap -8 shift bitxor ; inline swap -8 shift bitxor ; inline
SINGLETON: crc32 SINGLETON: crc32