{-# LANGUAGE TypeApplications #-}


-- | Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
-- License    : LGPL-2.1
-- Maintainer : Iñaki García Etxebarria
-- 
-- t'GI.Gdk.Objects.VulkanContext.VulkanContext' is an object representing the platform-specific
-- Vulkan draw context.
-- 
-- @/GdkVulkanContexts/@ are created for a t'GI.Gdk.Objects.Surface.Surface' using
-- 'GI.Gdk.Objects.Surface.surfaceCreateVulkanContext', and the context will match the
-- the characteristics of the surface.
-- 
-- Support for t'GI.Gdk.Objects.VulkanContext.VulkanContext' is platform-specific, context creation
-- can fail, returning 'P.Nothing' context.

#if (MIN_VERSION_haskell_gi_overloading(1,0,0) && !defined(__HADDOCK_VERSION__))
#define ENABLE_OVERLOADING
#endif

module GI.Gdk.Objects.VulkanContext
    ( 

-- * Exported types
    VulkanContext(..)                       ,
    IsVulkanContext                         ,
    toVulkanContext                         ,


 -- * Methods
-- | 
-- 
--  === __Click to display all available methods, including inherited ones__
-- ==== Methods
-- [beginFrame]("GI.Gdk.Objects.DrawContext#g:method:beginFrame"), [bindProperty]("GI.GObject.Objects.Object#g:method:bindProperty"), [bindPropertyFull]("GI.GObject.Objects.Object#g:method:bindPropertyFull"), [endFrame]("GI.Gdk.Objects.DrawContext#g:method:endFrame"), [forceFloating]("GI.GObject.Objects.Object#g:method:forceFloating"), [freezeNotify]("GI.GObject.Objects.Object#g:method:freezeNotify"), [getv]("GI.GObject.Objects.Object#g:method:getv"), [init]("GI.Gio.Interfaces.Initable#g:method:init"), [isFloating]("GI.GObject.Objects.Object#g:method:isFloating"), [isInFrame]("GI.Gdk.Objects.DrawContext#g:method:isInFrame"), [notify]("GI.GObject.Objects.Object#g:method:notify"), [notifyByPspec]("GI.GObject.Objects.Object#g:method:notifyByPspec"), [ref]("GI.GObject.Objects.Object#g:method:ref"), [refSink]("GI.GObject.Objects.Object#g:method:refSink"), [runDispose]("GI.GObject.Objects.Object#g:method:runDispose"), [stealData]("GI.GObject.Objects.Object#g:method:stealData"), [stealQdata]("GI.GObject.Objects.Object#g:method:stealQdata"), [thawNotify]("GI.GObject.Objects.Object#g:method:thawNotify"), [unref]("GI.GObject.Objects.Object#g:method:unref"), [watchClosure]("GI.GObject.Objects.Object#g:method:watchClosure").
-- 
-- ==== Getters
-- [getData]("GI.GObject.Objects.Object#g:method:getData"), [getDisplay]("GI.Gdk.Objects.DrawContext#g:method:getDisplay"), [getFrameRegion]("GI.Gdk.Objects.DrawContext#g:method:getFrameRegion"), [getProperty]("GI.GObject.Objects.Object#g:method:getProperty"), [getQdata]("GI.GObject.Objects.Object#g:method:getQdata"), [getSurface]("GI.Gdk.Objects.DrawContext#g:method:getSurface").
-- 
-- ==== Setters
-- [setData]("GI.GObject.Objects.Object#g:method:setData"), [setDataFull]("GI.GObject.Objects.Object#g:method:setDataFull"), [setProperty]("GI.GObject.Objects.Object#g:method:setProperty").

#if defined(ENABLE_OVERLOADING)
    ResolveVulkanContextMethod              ,
#endif



 -- * Signals


-- ** imagesUpdated #signal:imagesUpdated#

    C_VulkanContextImagesUpdatedCallback    ,
    VulkanContextImagesUpdatedCallback      ,
#if defined(ENABLE_OVERLOADING)
    VulkanContextImagesUpdatedSignalInfo    ,
#endif
    afterVulkanContextImagesUpdated         ,
    genClosure_VulkanContextImagesUpdated   ,
    mk_VulkanContextImagesUpdatedCallback   ,
    noVulkanContextImagesUpdatedCallback    ,
    onVulkanContextImagesUpdated            ,
    wrap_VulkanContextImagesUpdatedCallback ,




    ) where

import Data.GI.Base.ShortPrelude
import qualified Data.GI.Base.ShortPrelude as SP
import qualified Data.GI.Base.Overloading as O
import qualified Prelude as P

import qualified Data.GI.Base.Attributes as GI.Attributes
import qualified Data.GI.Base.BasicTypes as B.Types
import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr
import qualified Data.GI.Base.GArray as B.GArray
import qualified Data.GI.Base.GClosure as B.GClosure
import qualified Data.GI.Base.GError as B.GError
import qualified Data.GI.Base.GVariant as B.GVariant
import qualified Data.GI.Base.GValue as B.GValue
import qualified Data.GI.Base.GParamSpec as B.GParamSpec
import qualified Data.GI.Base.CallStack as B.CallStack
import qualified Data.GI.Base.Properties as B.Properties
import qualified Data.GI.Base.Signals as B.Signals
import qualified Control.Monad.IO.Class as MIO
import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map
import qualified Foreign.Ptr as FP
import qualified GHC.OverloadedLabels as OL
import qualified GHC.Records as R

import qualified GI.GObject.Objects.Object as GObject.Object
import {-# SOURCE #-} qualified GI.Gdk.Objects.DrawContext as Gdk.DrawContext
import qualified GI.Gio.Interfaces.Initable as Gio.Initable

-- | Memory-managed wrapper type.
newtype VulkanContext = VulkanContext (SP.ManagedPtr VulkanContext)
    deriving (VulkanContext -> VulkanContext -> Bool
(VulkanContext -> VulkanContext -> Bool)
-> (VulkanContext -> VulkanContext -> Bool) -> Eq VulkanContext
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: VulkanContext -> VulkanContext -> Bool
$c/= :: VulkanContext -> VulkanContext -> Bool
== :: VulkanContext -> VulkanContext -> Bool
$c== :: VulkanContext -> VulkanContext -> Bool
Eq)

instance SP.ManagedPtrNewtype VulkanContext where
    toManagedPtr :: VulkanContext -> ManagedPtr VulkanContext
toManagedPtr (VulkanContext ManagedPtr VulkanContext
p) = ManagedPtr VulkanContext
p

foreign import ccall "gdk_vulkan_context_get_type"
    c_gdk_vulkan_context_get_type :: IO B.Types.GType

instance B.Types.TypedObject VulkanContext where
    glibType :: IO GType
glibType = IO GType
c_gdk_vulkan_context_get_type

instance B.Types.GObject VulkanContext

-- | Type class for types which can be safely cast to `VulkanContext`, for instance with `toVulkanContext`.
class (SP.GObject o, O.IsDescendantOf VulkanContext o) => IsVulkanContext o
instance (SP.GObject o, O.IsDescendantOf VulkanContext o) => IsVulkanContext o

instance O.HasParentTypes VulkanContext
type instance O.ParentTypes VulkanContext = '[Gdk.DrawContext.DrawContext, GObject.Object.Object, Gio.Initable.Initable]

-- | Cast to `VulkanContext`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`.
toVulkanContext :: (MIO.MonadIO m, IsVulkanContext o) => o -> m VulkanContext
toVulkanContext :: forall (m :: * -> *) o.
(MonadIO m, IsVulkanContext o) =>
o -> m VulkanContext
toVulkanContext = IO VulkanContext -> m VulkanContext
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO VulkanContext -> m VulkanContext)
-> (o -> IO VulkanContext) -> o -> m VulkanContext
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ManagedPtr VulkanContext -> VulkanContext)
-> o -> IO VulkanContext
forall o o'.
(HasCallStack, ManagedPtrNewtype o, TypedObject o,
 ManagedPtrNewtype o', TypedObject o') =>
(ManagedPtr o' -> o') -> o -> IO o'
B.ManagedPtr.unsafeCastTo ManagedPtr VulkanContext -> VulkanContext
VulkanContext

-- | Convert 'VulkanContext' to and from 'Data.GI.Base.GValue.GValue'. See 'Data.GI.Base.GValue.toGValue' and 'Data.GI.Base.GValue.fromGValue'.
instance B.GValue.IsGValue (Maybe VulkanContext) where
    gvalueGType_ :: IO GType
gvalueGType_ = IO GType
c_gdk_vulkan_context_get_type
    gvalueSet_ :: Ptr GValue -> Maybe VulkanContext -> IO ()
gvalueSet_ Ptr GValue
gv Maybe VulkanContext
P.Nothing = Ptr GValue -> Ptr VulkanContext -> IO ()
forall a. GObject a => Ptr GValue -> Ptr a -> IO ()
B.GValue.set_object Ptr GValue
gv (Ptr VulkanContext
forall a. Ptr a
FP.nullPtr :: FP.Ptr VulkanContext)
    gvalueSet_ Ptr GValue
gv (P.Just VulkanContext
obj) = VulkanContext -> (Ptr VulkanContext -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
B.ManagedPtr.withManagedPtr VulkanContext
obj (Ptr GValue -> Ptr VulkanContext -> IO ()
forall a. GObject a => Ptr GValue -> Ptr a -> IO ()
B.GValue.set_object Ptr GValue
gv)
    gvalueGet_ :: Ptr GValue -> IO (Maybe VulkanContext)
gvalueGet_ Ptr GValue
gv = do
        Ptr VulkanContext
ptr <- Ptr GValue -> IO (Ptr VulkanContext)
forall a. GObject a => Ptr GValue -> IO (Ptr a)
B.GValue.get_object Ptr GValue
gv :: IO (FP.Ptr VulkanContext)
        if Ptr VulkanContext
ptr Ptr VulkanContext -> Ptr VulkanContext -> Bool
forall a. Eq a => a -> a -> Bool
/= Ptr VulkanContext
forall a. Ptr a
FP.nullPtr
        then VulkanContext -> Maybe VulkanContext
forall a. a -> Maybe a
P.Just (VulkanContext -> Maybe VulkanContext)
-> IO VulkanContext -> IO (Maybe VulkanContext)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (ManagedPtr VulkanContext -> VulkanContext)
-> Ptr VulkanContext -> IO VulkanContext
forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
B.ManagedPtr.newObject ManagedPtr VulkanContext -> VulkanContext
VulkanContext Ptr VulkanContext
ptr
        else Maybe VulkanContext -> IO (Maybe VulkanContext)
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe VulkanContext
forall a. Maybe a
P.Nothing
        
    

#if defined(ENABLE_OVERLOADING)
type family ResolveVulkanContextMethod (t :: Symbol) (o :: *) :: * where
    ResolveVulkanContextMethod "beginFrame" o = Gdk.DrawContext.DrawContextBeginFrameMethodInfo
    ResolveVulkanContextMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolveVulkanContextMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolveVulkanContextMethod "endFrame" o = Gdk.DrawContext.DrawContextEndFrameMethodInfo
    ResolveVulkanContextMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolveVulkanContextMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolveVulkanContextMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
    ResolveVulkanContextMethod "init" o = Gio.Initable.InitableInitMethodInfo
    ResolveVulkanContextMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolveVulkanContextMethod "isInFrame" o = Gdk.DrawContext.DrawContextIsInFrameMethodInfo
    ResolveVulkanContextMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolveVulkanContextMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolveVulkanContextMethod "ref" o = GObject.Object.ObjectRefMethodInfo
    ResolveVulkanContextMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolveVulkanContextMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
    ResolveVulkanContextMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
    ResolveVulkanContextMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
    ResolveVulkanContextMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
    ResolveVulkanContextMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
    ResolveVulkanContextMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
    ResolveVulkanContextMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
    ResolveVulkanContextMethod "getDisplay" o = Gdk.DrawContext.DrawContextGetDisplayMethodInfo
    ResolveVulkanContextMethod "getFrameRegion" o = Gdk.DrawContext.DrawContextGetFrameRegionMethodInfo
    ResolveVulkanContextMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolveVulkanContextMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolveVulkanContextMethod "getSurface" o = Gdk.DrawContext.DrawContextGetSurfaceMethodInfo
    ResolveVulkanContextMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolveVulkanContextMethod "setDataFull" o = GObject.Object.ObjectSetDataFullMethodInfo
    ResolveVulkanContextMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveVulkanContextMethod l o = O.MethodResolutionFailed l o

instance (info ~ ResolveVulkanContextMethod t VulkanContext, O.OverloadedMethod info VulkanContext p) => OL.IsLabel t (VulkanContext -> p) where
#if MIN_VERSION_base(4,10,0)
    fromLabel = O.overloadedMethod @info
#else
    fromLabel _ = O.overloadedMethod @info
#endif

#if MIN_VERSION_base(4,13,0)
instance (info ~ ResolveVulkanContextMethod t VulkanContext, O.OverloadedMethod info VulkanContext p, R.HasField t VulkanContext p) => R.HasField t VulkanContext p where
    getField = O.overloadedMethod @info

#endif

instance (info ~ ResolveVulkanContextMethod t VulkanContext, O.OverloadedMethodInfo info VulkanContext) => OL.IsLabel t (O.MethodProxy info VulkanContext) where
#if MIN_VERSION_base(4,10,0)
    fromLabel = O.MethodProxy
#else
    fromLabel _ = O.MethodProxy
#endif

#endif

-- signal VulkanContext::images-updated
-- | This signal is emitted when the images managed by this context have
-- changed. Usually this means that the swapchain had to be recreated,
-- for example in response to a change of the surface size.
type VulkanContextImagesUpdatedCallback =
    IO ()

-- | A convenience synonym for @`Nothing` :: `Maybe` `VulkanContextImagesUpdatedCallback`@.
noVulkanContextImagesUpdatedCallback :: Maybe VulkanContextImagesUpdatedCallback
noVulkanContextImagesUpdatedCallback :: Maybe (IO ())
noVulkanContextImagesUpdatedCallback = Maybe (IO ())
forall a. Maybe a
Nothing

-- | Type for the callback on the (unwrapped) C side.
type C_VulkanContextImagesUpdatedCallback =
    Ptr () ->                               -- object
    Ptr () ->                               -- user_data
    IO ()

-- | Generate a function pointer callable from C code, from a `C_VulkanContextImagesUpdatedCallback`.
foreign import ccall "wrapper"
    mk_VulkanContextImagesUpdatedCallback :: C_VulkanContextImagesUpdatedCallback -> IO (FunPtr C_VulkanContextImagesUpdatedCallback)

-- | Wrap the callback into a `GClosure`.
genClosure_VulkanContextImagesUpdated :: MonadIO m => VulkanContextImagesUpdatedCallback -> m (GClosure C_VulkanContextImagesUpdatedCallback)
genClosure_VulkanContextImagesUpdated :: forall (m :: * -> *).
MonadIO m =>
IO () -> m (GClosure C_VulkanContextImagesUpdatedCallback)
genClosure_VulkanContextImagesUpdated IO ()
cb = IO (GClosure C_VulkanContextImagesUpdatedCallback)
-> m (GClosure C_VulkanContextImagesUpdatedCallback)
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (GClosure C_VulkanContextImagesUpdatedCallback)
 -> m (GClosure C_VulkanContextImagesUpdatedCallback))
-> IO (GClosure C_VulkanContextImagesUpdatedCallback)
-> m (GClosure C_VulkanContextImagesUpdatedCallback)
forall a b. (a -> b) -> a -> b
$ do
    let cb' :: C_VulkanContextImagesUpdatedCallback
cb' = IO () -> C_VulkanContextImagesUpdatedCallback
wrap_VulkanContextImagesUpdatedCallback IO ()
cb
    C_VulkanContextImagesUpdatedCallback
-> IO (FunPtr C_VulkanContextImagesUpdatedCallback)
mk_VulkanContextImagesUpdatedCallback C_VulkanContextImagesUpdatedCallback
cb' IO (FunPtr C_VulkanContextImagesUpdatedCallback)
-> (FunPtr C_VulkanContextImagesUpdatedCallback
    -> IO (GClosure C_VulkanContextImagesUpdatedCallback))
-> IO (GClosure C_VulkanContextImagesUpdatedCallback)
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= FunPtr C_VulkanContextImagesUpdatedCallback
-> IO (GClosure C_VulkanContextImagesUpdatedCallback)
forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
B.GClosure.newGClosure


-- | Wrap a `VulkanContextImagesUpdatedCallback` into a `C_VulkanContextImagesUpdatedCallback`.
wrap_VulkanContextImagesUpdatedCallback ::
    VulkanContextImagesUpdatedCallback ->
    C_VulkanContextImagesUpdatedCallback
wrap_VulkanContextImagesUpdatedCallback :: IO () -> C_VulkanContextImagesUpdatedCallback
wrap_VulkanContextImagesUpdatedCallback IO ()
_cb Ptr ()
_ Ptr ()
_ = do
    IO ()
_cb 


-- | Connect a signal handler for the [imagesUpdated](#signal:imagesUpdated) signal, to be run before the default handler.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Signals.on' vulkanContext #imagesUpdated callback
-- @
-- 
-- 
onVulkanContextImagesUpdated :: (IsVulkanContext a, MonadIO m) => a -> VulkanContextImagesUpdatedCallback -> m SignalHandlerId
onVulkanContextImagesUpdated :: forall a (m :: * -> *).
(IsVulkanContext a, MonadIO m) =>
a -> IO () -> m SignalHandlerId
onVulkanContextImagesUpdated a
obj IO ()
cb = IO SignalHandlerId -> m SignalHandlerId
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO SignalHandlerId -> m SignalHandlerId)
-> IO SignalHandlerId -> m SignalHandlerId
forall a b. (a -> b) -> a -> b
$ do
    let cb' :: C_VulkanContextImagesUpdatedCallback
cb' = IO () -> C_VulkanContextImagesUpdatedCallback
wrap_VulkanContextImagesUpdatedCallback IO ()
cb
    FunPtr C_VulkanContextImagesUpdatedCallback
cb'' <- C_VulkanContextImagesUpdatedCallback
-> IO (FunPtr C_VulkanContextImagesUpdatedCallback)
mk_VulkanContextImagesUpdatedCallback C_VulkanContextImagesUpdatedCallback
cb'
    a
-> Text
-> FunPtr C_VulkanContextImagesUpdatedCallback
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
forall o a.
GObject o =>
o
-> Text
-> FunPtr a
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
connectSignalFunPtr a
obj Text
"images-updated" FunPtr C_VulkanContextImagesUpdatedCallback
cb'' SignalConnectMode
SignalConnectBefore Maybe Text
forall a. Maybe a
Nothing

-- | Connect a signal handler for the [imagesUpdated](#signal:imagesUpdated) signal, to be run after the default handler.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Signals.after' vulkanContext #imagesUpdated callback
-- @
-- 
-- 
afterVulkanContextImagesUpdated :: (IsVulkanContext a, MonadIO m) => a -> VulkanContextImagesUpdatedCallback -> m SignalHandlerId
afterVulkanContextImagesUpdated :: forall a (m :: * -> *).
(IsVulkanContext a, MonadIO m) =>
a -> IO () -> m SignalHandlerId
afterVulkanContextImagesUpdated a
obj IO ()
cb = IO SignalHandlerId -> m SignalHandlerId
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO SignalHandlerId -> m SignalHandlerId)
-> IO SignalHandlerId -> m SignalHandlerId
forall a b. (a -> b) -> a -> b
$ do
    let cb' :: C_VulkanContextImagesUpdatedCallback
cb' = IO () -> C_VulkanContextImagesUpdatedCallback
wrap_VulkanContextImagesUpdatedCallback IO ()
cb
    FunPtr C_VulkanContextImagesUpdatedCallback
cb'' <- C_VulkanContextImagesUpdatedCallback
-> IO (FunPtr C_VulkanContextImagesUpdatedCallback)
mk_VulkanContextImagesUpdatedCallback C_VulkanContextImagesUpdatedCallback
cb'
    a
-> Text
-> FunPtr C_VulkanContextImagesUpdatedCallback
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
forall o a.
GObject o =>
o
-> Text
-> FunPtr a
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
connectSignalFunPtr a
obj Text
"images-updated" FunPtr C_VulkanContextImagesUpdatedCallback
cb'' SignalConnectMode
SignalConnectAfter Maybe Text
forall a. Maybe a
Nothing


#if defined(ENABLE_OVERLOADING)
data VulkanContextImagesUpdatedSignalInfo
instance SignalInfo VulkanContextImagesUpdatedSignalInfo where
    type HaskellCallbackType VulkanContextImagesUpdatedSignalInfo = VulkanContextImagesUpdatedCallback
    connectSignal obj cb connectMode detail = do
        let cb' = wrap_VulkanContextImagesUpdatedCallback cb
        cb'' <- mk_VulkanContextImagesUpdatedCallback cb'
        connectSignalFunPtr obj "images-updated" cb'' connectMode detail

#endif

#if defined(ENABLE_OVERLOADING)
instance O.HasAttributeList VulkanContext
type instance O.AttributeList VulkanContext = VulkanContextAttributeList
type VulkanContextAttributeList = ('[ '("display", Gdk.DrawContext.DrawContextDisplayPropertyInfo), '("surface", Gdk.DrawContext.DrawContextSurfacePropertyInfo)] :: [(Symbol, *)])
#endif

#if defined(ENABLE_OVERLOADING)
#endif

#if defined(ENABLE_OVERLOADING)
type instance O.SignalList VulkanContext = VulkanContextSignalList
type VulkanContextSignalList = ('[ '("imagesUpdated", VulkanContextImagesUpdatedSignalInfo), '("notify", GObject.Object.ObjectNotifySignalInfo)] :: [(Symbol, *)])

#endif