Copyright | Will Thompson, Iñaki García Etxebarria and Jonas Platte |
---|---|
License | LGPL-2.1 |
Maintainer | Iñaki García Etxebarria (garetxe@gmail.com) |
Safe Haskell | None |
Language | Haskell2010 |
#GstMiniObject is a simple structure that can be used to implement refcounted types.
Subclasses will include #GstMiniObject as the first member in their structure and then call gst_mini_object_init() to initialize the #GstMiniObject fields.
gst_mini_object_ref() and gst_mini_object_unref() increment and decrement the refcount respectively. When the refcount of a mini-object reaches 0, the dispose function is called first and when this returns %TRUE, the free function of the miniobject is called.
A copy can be made with gst_mini_object_copy().
gst_mini_object_is_writable() will return %TRUE when the refcount of the object is exactly 1, meaning the current caller has the only reference to the object. gst_mini_object_make_writable() will return a writable version of the object, which might be a new copy when the refcount was not 1.
Opaque data can be associated with a #GstMiniObject with gst_mini_object_set_qdata() and gst_mini_object_get_qdata(). The data is meant to be specific to the particular object and is not automatically copied with gst_mini_object_copy() or similar methods.
A weak reference can be added and remove with gst_mini_object_weak_ref() and gst_mini_object_weak_unref() respectively.
- newtype MiniObject = MiniObject (ForeignPtr MiniObject)
- newZeroMiniObject :: MonadIO m => m MiniObject
- noMiniObject :: Maybe MiniObject
- data MiniObjectGetQdataMethodInfo
- miniObjectGetQdata :: MonadIO m => MiniObject -> Word32 -> m ()
- data MiniObjectIsWritableMethodInfo
- miniObjectIsWritable :: MonadIO m => MiniObject -> m Bool
- data MiniObjectLockMethodInfo
- miniObjectLock :: MonadIO m => MiniObject -> [LockFlags] -> m Bool
- data MiniObjectSetQdataMethodInfo
- miniObjectSetQdata :: MonadIO m => MiniObject -> Word32 -> Ptr () -> DestroyNotify -> m ()
- data MiniObjectStealQdataMethodInfo
- miniObjectStealQdata :: MonadIO m => MiniObject -> Word32 -> m ()
- miniObjectTake :: MonadIO m => MiniObject -> MiniObject -> m (Bool, MiniObject)
- data MiniObjectUnlockMethodInfo
- miniObjectUnlock :: MonadIO m => MiniObject -> [LockFlags] -> m ()
- miniObjectReadFlags :: MiniObject -> IO Word32
- miniObjectReadLockstate :: MiniObject -> IO Int32
- miniObjectReadRefcount :: MiniObject -> IO Int32
- miniObjectReadType :: MiniObject -> IO GType
Exported types
newtype MiniObject Source
newZeroMiniObject :: MonadIO m => m MiniObject Source
Construct a MiniObject
struct initialized to zero.
Methods
miniObjectGetQdata
data MiniObjectGetQdataMethodInfo Source
((~) (TYPE Lifted) signature (Word32 -> m ()), MonadIO m) => MethodInfo (TYPE Lifted) MiniObjectGetQdataMethodInfo MiniObject signature Source | |
miniObjectGetQdata :: MonadIO m => MiniObject -> Word32 -> m () Source
miniObjectIsWritable
data MiniObjectIsWritableMethodInfo Source
((~) (TYPE Lifted) signature (m Bool), MonadIO m) => MethodInfo (TYPE Lifted) MiniObjectIsWritableMethodInfo MiniObject signature Source | |
miniObjectIsWritable :: MonadIO m => MiniObject -> m Bool Source
miniObjectLock
data MiniObjectLockMethodInfo Source
((~) (TYPE Lifted) signature ([LockFlags] -> m Bool), MonadIO m) => MethodInfo (TYPE Lifted) MiniObjectLockMethodInfo MiniObject signature Source | |
miniObjectLock :: MonadIO m => MiniObject -> [LockFlags] -> m Bool Source
miniObjectSetQdata
data MiniObjectSetQdataMethodInfo Source
((~) (TYPE Lifted) signature (Word32 -> Ptr () -> DestroyNotify -> m ()), MonadIO m) => MethodInfo (TYPE Lifted) MiniObjectSetQdataMethodInfo MiniObject signature Source | |
miniObjectSetQdata :: MonadIO m => MiniObject -> Word32 -> Ptr () -> DestroyNotify -> m () Source
miniObjectStealQdata
data MiniObjectStealQdataMethodInfo Source
((~) (TYPE Lifted) signature (Word32 -> m ()), MonadIO m) => MethodInfo (TYPE Lifted) MiniObjectStealQdataMethodInfo MiniObject signature Source | |
miniObjectStealQdata :: MonadIO m => MiniObject -> Word32 -> m () Source
miniObjectTake
miniObjectTake :: MonadIO m => MiniObject -> MiniObject -> m (Bool, MiniObject) Source
miniObjectUnlock
data MiniObjectUnlockMethodInfo Source
((~) (TYPE Lifted) signature ([LockFlags] -> m ()), MonadIO m) => MethodInfo (TYPE Lifted) MiniObjectUnlockMethodInfo MiniObject signature Source | |
miniObjectUnlock :: MonadIO m => MiniObject -> [LockFlags] -> m () Source