From: Duncan C. <dun...@us...> - 2005-02-27 19:42:16
|
Update of /cvsroot/gtk2hs/gtk2hs/gtk/Graphics/UI/Gtk/General In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv32363/gtk/Graphics/UI/Gtk/General Modified Files: General.chs Log Message: GObject.chs.pp: change mkDestructor into mkFunPtrDestructor which is a tad more abstract (hiding the use of IORefs). General.chs: change use of mkDestructor to mkFunPtrDestructor and no longer export mkDestructor. EntryCompletion.chs.pp, TreeSelection.chs.pp, TreeView.chs.pp: change use of mkDestructor to mkFunPtrDestructor. Signal.chs-boot2: Following the same pattern for GClosureNotify as for GDestroyNotify above define a local copy of mkFunPtrDestructor for use in signal connection functions. HookGenerator.hs: change use of mkDestructor to mkFunPtrDestructor following the same pattern as before. This reduces code duplication a bit (saves about 350 lines of code). Index: General.chs =================================================================== RCS file: /cvsroot/gtk2hs/gtk2hs/gtk/Graphics/UI/Gtk/General/General.chs,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- General.chs 12 Feb 2005 17:19:22 -0000 1.3 +++ General.chs 27 Feb 2005 19:42:06 -0000 1.4 @@ -40,8 +40,6 @@ grabAdd, grabGetCurrent, grabRemove, - mkDestructor, - DestroyNotify, priorityLow, priorityDefault, priorityHigh, @@ -59,6 +57,7 @@ import System.Glib.FFI import System.Glib.UTFString +import System.Glib.GObject (DestroyNotify, mkFunPtrDestructor) import Graphics.UI.Gtk.Abstract.Object (makeNewObject) {#import Graphics.UI.Gtk.Types#} {#import Graphics.UI.Gtk.Signals#} @@ -183,12 +182,8 @@ {#pointer GSourceFunc as Function#} -{#pointer GDestroyNotify as DestroyNotify#} - foreign import ccall "wrapper" mkHandler :: IO {#type gint#} -> IO Function -foreign import ccall "wrapper" mkDestructor :: IO () -> IO DestroyNotify - type HandlerId = {#type guint#} -- Turn a function into a function pointer and a destructor pointer. @@ -196,12 +191,7 @@ makeCallback :: IO {#type gint#} -> IO (Function, DestroyNotify) makeCallback fun = do funPtr <- mkHandler fun - dRef <- newIORef nullFunPtr - dPtr <- mkDestructor $ do - freeHaskellFunPtr funPtr - dPtr <- readIORef dRef - freeHaskellFunPtr dPtr - writeIORef dRef dPtr + dPtr <- mkFunPtrDestructor funPtr return (funPtr, dPtr) -- | Register a function that is to be called after |