From e67f54cb87bdb3bbed2d0196b75a40e8209e7756 Mon Sep 17 00:00:00 2001 From: Joe Crayne Date: Sat, 18 May 2019 17:42:05 -0400 Subject: Fixed gpu upload of PointPrimitive ring buffer. --- PointPrimitiveRing.hs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/PointPrimitiveRing.hs b/PointPrimitiveRing.hs index bd9a15b..ff55df5 100644 --- a/PointPrimitiveRing.hs +++ b/PointPrimitiveRing.hs @@ -30,9 +30,9 @@ data Ring = Ring { rBufferObject :: Word32 , rStorage :: GLStorage , rObject :: Object - , rSize :: IORef CPtrdiff - , rStart :: IORef CPtrdiff - , ringCapacity :: CPtrdiff + , rSize :: IORef CPtrdiff -- Current count of Floats in the ring buffer. + , rStart :: IORef CPtrdiff -- Float-index where next vector will be added. TODO: rename this. + , ringCapacity :: CPtrdiff -- Maximum number of floats in buffer. } addToObjectArray :: GLStorage @@ -210,9 +210,9 @@ updateRingCommands r = do start <- fmap (fromIntegral . (`div` 3)) $ readIORef $ rStart r size <- fmap (fromIntegral . (`div` 3)) $ readIORef $ rSize r let mask 0 = [] - mask cnt = if start + size < cnt - then [(start,size)] - else [(0,start + size - cnt), (start,cnt-start)] + mask cnt = case cnt + start - size of + st | st > cnt -> [(st - cnt,size)] + | otherwise -> [(0,start), (st,cnt - st)] updateCommands (rStorage r) (rObject r) mask readIORef (objCommands $ rObject r) >>= mapM_ print return () -- cgit v1.2.3