| 
     
      
      
      From: Axel S. <si...@co...> - 2009-10-30 17:02:14
      
     
   | 
Mon Oct 26 11:53:28 EDT 2009  Axe...@en...
  * Fix the Gst hierarchy.
  The gstreamer modules used a different hierarchy for their objects which meant that they were not interchangeable with the GObject-rooted hierarchy. There still exists a MiniHierarchy for the light-weight objects of gstreamer but they are now created using the same utility in tools/hierarchyGen.
    hunk ./Makefile.am 35
    -	gstreamer/hierarchy.list		\
    hunk ./Makefile.am 36
    -	gstreamer/gobject-hierarchy.list	\
    -	gstreamer/Media/Streaming/GStreamer/Hierarchy.chs.template	\
    -	gstreamer/Media/Streaming/GStreamer/MiniHierarchy.chs.template \
    hunk ./Makefile.am 466
    -	--parentname=System.Glib.GObject)
    +	--import=*System.Glib.GObject)
    hunk ./Makefile.am 879
    -        --parentname=System.Glib.GObject)
    +        --forward=*System.Glib.GObject)
    hunk ./Makefile.am 1023
    -		      --parentname=Graphics.UI.Gtk.Types)
    +		      --import=*Graphics.UI.Gtk.Types)
    hunk ./Makefile.am 1289
    -	--modname=System.Gnome.GConf.Types --parentname=System.Glib.GObject)
    +	--modname=System.Gnome.GConf.Types --import=*System.Glib.GObject)
    hunk ./Makefile.am 1435
    -	$@ --tag=sourceview --parentname=Graphics.UI.Gtk.Types \
    +	$@ --tag=sourceview --import=*Graphics.UI.Gtk.Types \
    hunk ./Makefile.am 1576
    -	--parentname=Graphics.UI.Gtk.Types \
    +	--import=*Graphics.UI.Gtk.Types \
    hunk ./Makefile.am 1708
    -	$@ --tag=mozembed --parentname=Graphics.UI.Gtk.Types \
    +	$@ --tag=mozembed --import=*Graphics.UI.Gtk.Types \
    hunk ./Makefile.am 2095
    -	$@ --tag=gtkglext --parentname=Graphics.UI.Gtk.Types \
    +	$@ --tag=gtkglext --import=*Graphics.UI.Gtk.Types \
    hunk ./Makefile.am 2354
    -	--modname=System.Gnome.VFS.Hierarchy --parentname=System.Glib.GObject)
    +	--modname=System.Gnome.VFS.Hierarchy --import=*System.Glib.GObject)
    hunk ./Makefile.am 2498
    +	gstreamer/Media/Streaming/GStreamer/Core/MiniHierarchyBase.chs	\
    hunk ./Makefile.am 2572
    -	--parentname=System.Glib.GObject)
    +	--import=*System.Glib.GObject)
    hunk ./Makefile.am 2582
    -	--parentname=Media.Streaming.GStreamer.Core.MiniHierarchyBase	\
    -	--modname=Media.Streaming.GStreamer.Core.MiniHierarchy)
    +	--import=*Media.Streaming.GStreamer.Core.MiniHierarchyBase	\
    +	--modname=Media.Streaming.GStreamer.Core.MiniHierarchy		\
    +	--destructor=miniObjectUnref)
    hunk ./gstreamer/Media/Streaming/GStreamer/Core/MiniHierarchyBase.chs 33
    -  module System.Glib.GObject,
    +  miniObjectUnref,
    hunk ./gstreamer/Media/Streaming/GStreamer/Core/MiniHierarchyBase.chs 40
    -  mkCastToMiniObject,
    -  mkIsMiniObject,
    hunk ./gstreamer/Media/Streaming/GStreamer/Core/MiniHierarchyBase.chs 44
    -import System.Glib.GObject
    hunk ./gstreamer/Media/Streaming/GStreamer/Core/MiniHierarchyBase.chs 49
    -mkMiniObject = MiniObject
    +mkMiniObject = (MiniObject, miniObjectUnref)
    hunk ./gstreamer/Media/Streaming/GStreamer/Core/MiniHierarchyBase.chs 52
    +
    hunk ./gstreamer/Media/Streaming/GStreamer/Core/MiniHierarchyBase.chs 69
    -castToMiniObject = mkMiniObject . castForeignPtr . unMiniObject . toMiniObject
    +castToMiniObject = toMiniObject
    hunk ./gstreamer/Media/Streaming/GStreamer/Core/MiniHierarchyBase.chs 71
    --- The usage of foreignPtrToPtr should be safe as the evaluation will only be
    --- forced if the object is used afterwards
    +-- | Decrease the reference counter of an object
    hunk ./gstreamer/Media/Streaming/GStreamer/Core/MiniHierarchyBase.chs 73
    -mkCastToMiniObject :: (MiniObjectClass obj, MiniObjectClass obj')
    -                   => GType
    -                   -> String
    -                   -> (obj -> obj')
    -mkCastToMiniObject gtype objTypeName obj =
    -  case toMiniObject obj of
    -    gobj@(MiniObject objFPtr)
    -      | typeInstanceIsA ((unsafeForeignPtrToPtr.castForeignPtr) objFPtr) gtype
    -                  -> unsafeCastMiniObject gobj
    -      | otherwise -> error $ "Cannot cast object to " ++ objTypeName
    -
    -mkIsMiniObject :: MiniObjectClass obj
    -               => GType
    -               -> obj
    -               -> Bool
    -mkIsMiniObject gType obj =
    -    unsafePerformIO $
    -        withForeignPtr (unMiniObject $ toMiniObject obj) $ \objPtr ->
    -            return $ typeInstanceIsA (castPtr objPtr) gType
    +foreign import ccall unsafe "&gst_mini_object_unref"
    +  miniObjectUnref :: FinalizerPtr a
    hunk ./tools/hierarchyGen/Hierarchy.chs.template 36
    -@MODULE_EXPORTS@@FORWARD_EXPORTS@
    +@MODULE_EXPORTS@
    hunk ./tools/hierarchyGen/Hierarchy.chs.template 42
    -@IMPORT_PARENT@
    -@FORWARD_IMPORTS@
    +@MODULE_IMPORTS@
    hunk ./tools/hierarchyGen/TypeGen.hs 55
    +    pFL ps all@('G':'s':'t':rem)= pGetObject ps all rem
    hunk ./tools/hierarchyGen/TypeGen.hs 127
    -  let parentName = case map (drop 13) (filter ("--parentname=" `isPrefixOf`) rem) of
    -  		     [] -> ""
    -		     (parentName:_) -> parentName
    +  let extraNames = map (drop 9) (filter ("--import=" `isPrefixOf`) rem)
    hunk ./tools/hierarchyGen/TypeGen.hs 149
    -
    +  let showImport ('*':m ) = ss "{#import " .ss m .ss "#}" . indent 0
    +      showImport m = ss "import " . ss m . indent 0
    hunk ./tools/hierarchyGen/TypeGen.hs 158
    -        "MODULE_EXPORTS" -> generateExports rootObject parentName forwardNames objs
    -	"IMPORT_PARENT"  -> if null parentName
    -	                      then id
    -	                      else ss "{#import " .ss parentName .ss "#}"
    -        "FORWARD_IMPORTS"->
    -          foldl (.) id [ ss "import " . ss m . indent 0 | m <- forwardNames ]
    +        "MODULE_EXPORTS" -> generateExports rootObject (map (dropWhile ((==) '*')) forwardNames) objs
    +	"MODULE_IMPORTS" -> foldl (.) id (map showImport (extraNames++forwardNames))
    hunk ./tools/hierarchyGen/TypeGen.hs 171
    -	\              {--lib=<lib>} {--prefix=<prefix>}\n\
    -	\              {--modname=<modName>} {--parentname=<parentName>}\n\
    -	\              {--forward=<fwdName>} {--destructor=<destrName>}\n\
    +	\              [--lib=<lib>] [--prefix=<prefix>]\n\
    +	\              [--modname=<modName>] {--import=<*><importName>}\n\
    +	\              {--forward=<*><fwdName>} [--destructor=<destrName>]\n\
    hunk ./tools/hierarchyGen/TypeGen.hs 187
    -	\  <parentName>    specify the name of the module that defines any\n\
    -	\                  parent classes eg Hierarchy (default is none)\n\
    +	\  <importName>    additionally import this module without\n\
    +	\                  re-exporting it\n\
    hunk ./tools/hierarchyGen/TypeGen.hs 190
    +	\  <*>             use an asterix as prefix if the import should\n\
    +	\                  be a .chs import statement\n\
    hunk ./tools/hierarchyGen/TypeGen.hs 203
    -generateExports :: String -> String -> [String] -> [[String]] -> ShowS
    -generateExports rootObject parent forwardNames objs =
    -  (if null parent
    -     then ss ""
    -     else ss "  module " .ss parent. ss ",").
    +generateExports :: String -> [String] -> [[String]] -> ShowS
    +generateExports rootObject forwardNames objs =
 |