Patches for HOpenGL-1.01

Appended are a bunch of patches for HOpenGL-1.01 to catch up with the latest changes in GLU and the CVS HEAD version of GHC. They provide minimal fixes for the ubiquitous GLU versionitis and the current Haskell library reorganization. People which are using only "official" GHCs and don't have any problems with their GLU setup can happily ignore this mail... I don't really want to release Yet Another HOpenGL Version (tm) before a new GHC is out, so this seems to be the easiest way to keep people on the bleeding edge happy. Cheers, S. diff -u -r HOpenGL-1.01-orig/examples/misc/BitSet.hs HOpenGL-1.01/examples/misc/BitSet.hs --- HOpenGL-1.01-orig/examples/misc/BitSet.hs Fri Jan 14 16:06:20 2000 +++ HOpenGL-1.01/examples/misc/BitSet.hs Mon Mar 4 17:32:03 2002 @@ -7,24 +7,24 @@ import Ix(rangeSize) import Monad(liftM) -import IOExts +import Data.Array.IO -newtype BitSet = BitSet (IOArray Int Bool) +newtype BitSet = BitSet (IOUArray Int Bool) emptyBS :: Int -> IO BitSet -emptyBS size = liftM BitSet $ newIOArray (0, size-1) False +emptyBS size = liftM BitSet $ newArray (0, size-1) False clearBS :: BitSet -> Int -> IO () -clearBS (BitSet bs) i = writeIOArray bs i False +clearBS (BitSet bs) i = writeArray bs i False clearAllBS :: BitSet -> IO () clearAllBS bs = mapM_ (clearBS bs) [0 .. sizeBS bs - 1] setBS :: BitSet -> Int -> IO () -setBS (BitSet bs) i = writeIOArray bs i True +setBS (BitSet bs) i = writeArray bs i True isSetBS :: BitSet -> Int -> IO Bool -isSetBS (BitSet bs) i = readIOArray bs i +isSetBS (BitSet bs) i = readArray bs i sizeBS :: BitSet -> Int -sizeBS (BitSet bs) = rangeSize (boundsIOArray bs) +sizeBS (BitSet bs) = rangeSize (bounds bs) diff -u -r HOpenGL-1.01-orig/examples/misc/FPSCounter.hs HOpenGL-1.01/examples/misc/FPSCounter.hs --- HOpenGL-1.01-orig/examples/misc/FPSCounter.hs Tue Mar 14 12:07:47 2000 +++ HOpenGL-1.01/examples/misc/FPSCounter.hs Mon Mar 4 17:33:36 2002 @@ -9,6 +9,7 @@ import IOExts import Time +import Data.Array.IO data FPSCounter = FPSCounter (IORef Int) -- 0-based counter for averaging @@ -20,18 +21,18 @@ -- The initial value is as wrong as any other, but it is -- automatically corrected after a wrap-around. ct <- getClockTime - elapsedTimes <- newIOArray (1, numUpdates) ct + elapsedTimes <- newArray (1, numUpdates) ct return $ FPSCounter counter elapsedTimes getFPS :: FPSCounter -> IO Float getFPS (FPSCounter counter elapsedTimes) = do - let (lo, hi) = boundsIOArray elapsedTimes + let (lo, hi) = bounds elapsedTimes numUpdates = hi - lo + 1 count <- readIORef counter - oldElapsed <- readIOArray elapsedTimes (count + lo) + oldElapsed <- readArray elapsedTimes (count + lo) newElapsed <- getClockTime writeIORef counter ((count + 1) `mod` numUpdates) - writeIOArray elapsedTimes (count + lo) newElapsed + writeArray elapsedTimes (count + lo) newElapsed return $ fromIntegral numUpdates / max (timeDiffInSecs (diffClockTimes newElapsed oldElapsed)) 1.0e-4 -- safety diff -u -r HOpenGL-1.01-orig/examples/misc/PackLib.hs HOpenGL-1.01/examples/misc/PackLib.hs --- HOpenGL-1.01-orig/examples/misc/PackLib.hs Sun Jun 11 16:43:43 2000 +++ HOpenGL-1.01/examples/misc/PackLib.hs Mon Mar 4 17:18:24 2002 @@ -17,7 +17,7 @@ import List(isPrefixOf, nub) import Monad(liftM, when, unless) import Directory(getDirectoryContents) -import IOExts(hSetBinaryMode) -- see comment in front of openBinaryFile +import GHC.Handle(hSetBinaryMode) -- see comment in front of openBinaryFile {- -- DEBUGGING ONLY diff -u -r HOpenGL-1.01-orig/lib/GLUT_CBGlobal.gc.in HOpenGL-1.01/lib/GLUT_CBGlobal.gc.in --- HOpenGL-1.01-orig/lib/GLUT_CBGlobal.gc.in Thu Mar 16 11:56:46 2000 +++ HOpenGL-1.01/lib/GLUT_CBGlobal.gc.in Mon Mar 4 16:29:41 2002 @@ -29,7 +29,7 @@ import Prelude hiding (Either(Left)) -import IOExts(fixIO, freeHaskellFunctionPtr) +import IOExts(fixIO) import GL_DIS import GL_BasicTypes(WindowPosition(..)) import GLUT_CallbackUtils(GlobalCallback(..), gFunc) diff -u -r HOpenGL-1.01-orig/lib/GLUT_CallbackUtils.hs HOpenGL-1.01/lib/GLUT_CallbackUtils.hs --- HOpenGL-1.01-orig/lib/GLUT_CallbackUtils.hs Wed Mar 15 14:05:33 2000 +++ HOpenGL-1.01/lib/GLUT_CallbackUtils.hs Mon Mar 4 16:29:53 2002 @@ -25,7 +25,7 @@ GlobalCallback(..), gFunc ) where -import IOExts(IORef, newIORef, readIORef, writeIORef, freeHaskellFunctionPtr) +import IOExts(IORef, newIORef, readIORef, writeIORef) import Maybe(isJust) import GL_DIS import GLUT_Window(Window, getWindow) diff -u -r HOpenGL-1.01-orig/lib/GLUT_Menu.gc HOpenGL-1.01/lib/GLUT_Menu.gc --- HOpenGL-1.01-orig/lib/GLUT_Menu.gc Sun Oct 28 16:16:30 2001 +++ HOpenGL-1.01/lib/GLUT_Menu.gc Mon Mar 4 16:29:09 2002 @@ -27,7 +27,7 @@ MenuAction, MenuItem(..), attachMenu ) where -import IOExts(IORef, newIORef, readIORef, writeIORef, freeHaskellFunctionPtr) +import IOExts(IORef, newIORef, readIORef, writeIORef) import Monad(unless) import GL_DIS import GLUT_CBWindow(MouseButton, marshall_MouseButton) diff -u -r HOpenGL-1.01-orig/lib/GLU_NURBS.gc.in HOpenGL-1.01/lib/GLU_NURBS.gc.in --- HOpenGL-1.01-orig/lib/GLU_NURBS.gc.in Thu Nov 1 18:06:55 2001 +++ HOpenGL-1.01/lib/GLU_NURBS.gc.in Mon Mar 4 17:00:15 2002 @@ -212,7 +212,7 @@ @GLU_1_3@%enum NurbsMode (Eq,Ord) GLfloat [ @GLU_1_3@% GLU_NURBS_RENDERER, -@GLU_1_3@% GLU_NURBS_TESSELATOR +@GLU_1_3@% GLU_NURBS_TESSELLATOR @GLU_1_3@% ] nurbsProperty :: NurbsObj -> NurbsProperty -> IO () diff -u -r HOpenGL-1.01-orig/lib/GLU_Quadrics.gc HOpenGL-1.01/lib/GLU_Quadrics.gc --- HOpenGL-1.01-orig/lib/GLU_Quadrics.gc Thu Nov 1 18:07:31 2001 +++ HOpenGL-1.01/lib/GLU_Quadrics.gc Mon Mar 4 16:29:16 2002 @@ -30,7 +30,7 @@ sphere, cylinder, disk, partialDisk ) where -import IOExts(fixIO, IORef, newIORef, readIORef, writeIORef, freeHaskellFunctionPtr) +import IOExts(fixIO, IORef, newIORef, readIORef, writeIORef) import Monad(when, unless) import GL_DIS import GL_BasicTypes(GLdouble, GLint, GLenum, GLboolean, marshall_GLboolean) diff -u -r HOpenGL-1.01-orig/lib/GL_Errors.gc HOpenGL-1.01/lib/GL_Errors.gc --- HOpenGL-1.01-orig/lib/GL_Errors.gc Sun Nov 11 18:31:59 2001 +++ HOpenGL-1.01/lib/GL_Errors.gc Mon Mar 4 15:32:14 2002 @@ -53,7 +53,7 @@ % GLU_NURBS_ERROR31, GLU_NURBS_ERROR32, GLU_NURBS_ERROR33, % GLU_NURBS_ERROR34, GLU_NURBS_ERROR35, GLU_NURBS_ERROR36, % GLU_NURBS_ERROR37, GLU_INVALID_ENUM, GLU_INVALID_VALUE, -% GLU_OUT_OF_MEMORY, GLU_INCOMPATIBLE_GL_VERSION +% GLU_OUT_OF_MEMORY % ] -- Silly line, because some Green Card versions stumble over a directive at EOF diff -u -r HOpenGL-1.01-orig/lib/GL_FFI.hs.in HOpenGL-1.01/lib/GL_FFI.hs.in --- HOpenGL-1.01-orig/lib/GL_FFI.hs.in Sat Jul 8 23:27:10 2000 +++ HOpenGL-1.01/lib/GL_FFI.hs.in Mon Mar 4 17:05:45 2002 @@ -18,8 +18,14 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -} -@HAS_STORABLE@module GL_FFI ( module Foreign ) where +@HAS_STORABLE@module GL_FFI ( module Foreign, module Addr, module ForeignObj, +@HAS_STORABLE@ freeHaskellFunctionPtr, makeStablePtr ) where @HAS_STORABLE@import Foreign +@HAS_STORABLE@import Addr +@HAS_STORABLE@import ForeignObj +@HAS_STORABLE@foreign import "freeHaskellFunctionPtr" unsafe +@HAS_STORABLE@ freeHaskellFunctionPtr :: Addr -> IO () +@HAS_STORABLE@makeStablePtr = newStablePtr @HAS_STORABLE@ {- module GL_FFI (
participants (1)
-
Sven Panne