summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoe Crayne <joe@jerkface.net>2019-04-24 13:14:57 -0400
committerJoe Crayne <joe@jerkface.net>2019-04-24 13:14:57 -0400
commitb43403d6fe16e3ab44f98f71963d462dc9598149 (patch)
treefd3721bf3691f0453f935715957f64ade1e01444
parent158564b28f4316b4c140457d543ec4d65391a043 (diff)
Updated gix family of demos.
-rw-r--r--Draw.hs7
-rw-r--r--Lambda2.hs3
-rw-r--r--Triangle.hs13
-rw-r--r--gix.hs1
4 files changed, 18 insertions, 6 deletions
diff --git a/Draw.hs b/Draw.hs
index 3377548..05d3d03 100644
--- a/Draw.hs
+++ b/Draw.hs
@@ -4,7 +4,7 @@ module Draw where
4import Control.Concurrent 4import Control.Concurrent
5import Data.Int 5import Data.Int
6import Data.IORef 6import Data.IORef
7import Foreign.ForeignPtr 7import Data.GI.Base.ManagedPtr (newManagedPtr)
8import Foreign.Ptr 8import Foreign.Ptr
9import GI.Gdk.Objects 9import GI.Gdk.Objects
10import GI.Gtk 10import GI.Gtk
@@ -50,9 +50,8 @@ createContext st glarea = do
50 Just win -> windowCreateGlContext win 50 Just win -> windowCreateGlContext win
51 Nothing -> do 51 Nothing -> do
52 oops "createContext: GLArea has no window." 52 oops "createContext: GLArea has no window."
53 fp <- newForeignPtr_ nullPtr 53 mp <- newManagedPtr nullPtr (return ())
54 disown <- newIORef Nothing 54 return $ GLContext mp
55 return $ GLContext $ ManagedPtr fp disown
56 55
57oops :: String -> IO () 56oops :: String -> IO ()
58oops s = hPutStrLn stderr s 57oops s = hPutStrLn stderr s
diff --git a/Lambda2.hs b/Lambda2.hs
index 7677464..063f751 100644
--- a/Lambda2.hs
+++ b/Lambda2.hs
@@ -28,7 +28,8 @@ import Data.Char
28import Text.Printf 28import Text.Printf
29import System.IO 29import System.IO
30 30
31import qualified Backend as RF 31-- import qualified Backend as RF
32import LambdaCube.GL as RF
32 33
33data State = State 34data State = State
34 35
diff --git a/Triangle.hs b/Triangle.hs
index 175446c..1a7a58e 100644
--- a/Triangle.hs
+++ b/Triangle.hs
@@ -1,6 +1,7 @@
1{-# LANGUAGE QuasiQuotes #-} 1{-# LANGUAGE QuasiQuotes, LambdaCase #-}
2module Triangle where 2module Triangle where
3 3
4import Data.GI.Base.ManagedPtr (newManagedPtr)
4import Graphics.Rendering.OpenGL as GL 5import Graphics.Rendering.OpenGL as GL
5import GI.Gtk as Gtk 6import GI.Gtk as Gtk
6import GI.Gdk.Objects 7import GI.Gdk.Objects
@@ -115,3 +116,13 @@ realize svar w = do
115unrealize :: MVar State -> GLArea -> IO () 116unrealize :: MVar State -> GLArea -> IO ()
116unrealize _ _ = do 117unrealize _ _ = do
117 putStrLn "unrealize!" 118 putStrLn "unrealize!"
119
120createContext :: MVar State -> GLArea -> IO GLContext
121createContext st glarea = do
122 st <- readMVar st
123 widgetGetWindow glarea >>= \case
124 Just win -> windowCreateGlContext win
125 Nothing -> do
126 putStrLn "createContext: GLArea has no window."
127 mptr <- newManagedPtr nullPtr (return ())
128 return $ GLContext mptr
diff --git a/gix.hs b/gix.hs
index dd6e303..349d6a9 100644
--- a/gix.hs
+++ b/gix.hs
@@ -12,6 +12,7 @@ import Foreign.Ptr
12 12
13-- import Triangle as R 13-- import Triangle as R
14-- import Lambda2 as R 14-- import Lambda2 as R
15-- import Draw as R
15import LambdaHello as R 16import LambdaHello as R
16 17
17 18