From b43403d6fe16e3ab44f98f71963d462dc9598149 Mon Sep 17 00:00:00 2001 From: Joe Crayne Date: Wed, 24 Apr 2019 13:14:57 -0400 Subject: Updated gix family of demos. --- Draw.hs | 7 +++---- Lambda2.hs | 3 ++- Triangle.hs | 13 ++++++++++++- gix.hs | 1 + 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 import Control.Concurrent import Data.Int import Data.IORef -import Foreign.ForeignPtr +import Data.GI.Base.ManagedPtr (newManagedPtr) import Foreign.Ptr import GI.Gdk.Objects import GI.Gtk @@ -50,9 +50,8 @@ createContext st glarea = do Just win -> windowCreateGlContext win Nothing -> do oops "createContext: GLArea has no window." - fp <- newForeignPtr_ nullPtr - disown <- newIORef Nothing - return $ GLContext $ ManagedPtr fp disown + mp <- newManagedPtr nullPtr (return ()) + return $ GLContext mp oops :: String -> IO () oops 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 import Text.Printf import System.IO -import qualified Backend as RF +-- import qualified Backend as RF +import LambdaCube.GL as RF data State = State diff --git a/Triangle.hs b/Triangle.hs index 175446c..1a7a58e 100644 --- a/Triangle.hs +++ b/Triangle.hs @@ -1,6 +1,7 @@ -{-# LANGUAGE QuasiQuotes #-} +{-# LANGUAGE QuasiQuotes, LambdaCase #-} module Triangle where +import Data.GI.Base.ManagedPtr (newManagedPtr) import Graphics.Rendering.OpenGL as GL import GI.Gtk as Gtk import GI.Gdk.Objects @@ -115,3 +116,13 @@ realize svar w = do unrealize :: MVar State -> GLArea -> IO () unrealize _ _ = do putStrLn "unrealize!" + +createContext :: MVar State -> GLArea -> IO GLContext +createContext st glarea = do + st <- readMVar st + widgetGetWindow glarea >>= \case + Just win -> windowCreateGlContext win + Nothing -> do + putStrLn "createContext: GLArea has no window." + mptr <- newManagedPtr nullPtr (return ()) + 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 -- import Triangle as R -- import Lambda2 as R +-- import Draw as R import LambdaHello as R -- cgit v1.2.3