gi-gtk-hs-0.3.16: A wrapper for gi-gtk, adding a few more idiomatic API parts on top
Stabilityprovisional
Portabilityportable (depends on GHC)
Safe HaskellSafe-Inferred
LanguageHaskell2010

Data.GI.Gtk.Threading

Description

Utility functions for threading

Synopsis

Documentation

Utility functions to run IO actions on the GUI thread. You must call setGUIThread or setCurrentThreadAsGUIThread before using the synchronous options, or you risk deadlocking.

Note that the notion of Thread used by this module corresponds to operating system threads, not Haskell threads. A single operating system thread may run multiple Haskell threads, and a Haskell thread may migrate between operating system threads. In order for this nothing of Thread to make sense to a Haskell program, we must be working in a bound Haskell thread, which is tied to a single operating system thread. Haskell's main function is automatically bound, and the postGUI functions will create a new bound thread if nessasary.

setGUIThread :: Thread -> IO () Source #

Inform gi-gtk-hs what thread is running the gtk main loop.

getGUIThread :: IO (Maybe Thread) Source #

Get the Thread that is running the Gtk main loop, if it has been set.

setCurrentThreadAsGUIThread :: IO () Source #

Inform gi-gtk-hs that the current thread is, or will be, running the gtk main loop.

Equivalent to threadSelf >>= setGUIThread

postGUISyncWithPriority :: Int32 -> IO a -> IO a Source #

Queue an action to be run in the GTK event loop. If called from the same process as the event loop, this runs the action directly. Otherwise, this queues it in GTK's event loop and blocks until the action is complete

You must call setGUIThread or setCurrentThreadAsGUIThread before this.

Priority is typically between PRIORITY_HIGH_IDLE (100) and PRIORITY_DEFAULT_IDLE (200)

postGUISync :: IO a -> IO a Source #

Queue an action to be run in the GTK event loop. If called from the same process as the event loop, this runs the action directly. Otherwise, this queues it in GTK's event loop and blocks until the action is complete

You must call setGUIThread or setCurrentThreadAsGUIThread before this.

Equivalent to postGUISyncWithPriority PRIORITY_DEFAULT_IDLE

postGUIASyncWithPriority :: Int32 -> IO () -> IO () Source #

Queue an action to be run in the GTK event loop. This function queues the event regardless of what process it is called from, and returns immidietly.

Priority is typically between PRIORITY_HIGH_IDLE (100) and PRIORITY_DEFAULT_IDLE (200)

postGUIASync :: IO () -> IO () Source #

Queue an action to be run in the GTK event loop. This function queues the event regardless of what process it is called from, and returns immidietly.

Equivalent to postGUIASyncWithPriority PRIORITY_DEFAULT_IDLE

compareThreads :: Thread -> Thread -> IO Bool Source #

Test if two Threads refer to the same OS thread. A Thread can be gotten from threadSelf. Note that threadSelf only makes sense from a bound thread.

isGUIThread :: IO Bool Source #

Check if the current thread is the Gtk gui thread.

You must call setGUIThread or setCurrentThreadAsGUIThread before this. This only makes sense when called from a bound thread.

newtype Thread #

Constructors

Thread (ManagedPtr Thread) 

Instances

Instances details
Eq Thread 
Instance details

Defined in GI.GLib.Structs.Thread

Methods

(==) :: Thread -> Thread -> Bool #

(/=) :: Thread -> Thread -> Bool #

GBoxed Thread 
Instance details

Defined in GI.GLib.Structs.Thread

ManagedPtrNewtype Thread 
Instance details

Defined in GI.GLib.Structs.Thread

TypedObject Thread 
Instance details

Defined in GI.GLib.Structs.Thread

Methods

glibType :: IO GType #

HasParentTypes Thread 
Instance details

Defined in GI.GLib.Structs.Thread

tag ~ 'AttrSet => Constructible Thread tag 
Instance details

Defined in GI.GLib.Structs.Thread

Methods

new :: MonadIO m => (ManagedPtr Thread -> Thread) -> [AttrOp Thread tag] -> m Thread #

HasAttributeList Thread 
Instance details

Defined in GI.GLib.Structs.Thread

(info ~ ResolveThreadMethod t Thread, OverloadedMethod info Thread p, HasField t Thread p) => HasField (t :: Symbol) Thread p 
Instance details

Defined in GI.GLib.Structs.Thread

Methods

getField :: Thread -> p #

(signature ~ m (Ptr ()), MonadIO m) => OverloadedMethod ThreadJoinMethodInfo Thread signature 
Instance details

Defined in GI.GLib.Structs.Thread

Methods

overloadedMethod :: Thread -> signature

(signature ~ m Thread, MonadIO m) => OverloadedMethod ThreadRefMethodInfo Thread signature 
Instance details

Defined in GI.GLib.Structs.Thread

Methods

overloadedMethod :: Thread -> signature

(signature ~ m (), MonadIO m) => OverloadedMethod ThreadUnrefMethodInfo Thread signature 
Instance details

Defined in GI.GLib.Structs.Thread

Methods

overloadedMethod :: Thread -> signature

OverloadedMethodInfo ThreadJoinMethodInfo Thread 
Instance details

Defined in GI.GLib.Structs.Thread

Methods

overloadedMethodInfo :: Maybe ResolvedSymbolInfo

OverloadedMethodInfo ThreadRefMethodInfo Thread 
Instance details

Defined in GI.GLib.Structs.Thread

Methods

overloadedMethodInfo :: Maybe ResolvedSymbolInfo

OverloadedMethodInfo ThreadUnrefMethodInfo Thread 
Instance details

Defined in GI.GLib.Structs.Thread

Methods

overloadedMethodInfo :: Maybe ResolvedSymbolInfo

(info ~ ResolveThreadMethod t Thread, OverloadedMethodInfo info Thread) => IsLabel t (MethodProxy info Thread) 
Instance details

Defined in GI.GLib.Structs.Thread

Methods

fromLabel :: MethodProxy info Thread #

(info ~ ResolveThreadMethod t Thread, OverloadedMethod info Thread p) => IsLabel t (Thread -> p) 
Instance details

Defined in GI.GLib.Structs.Thread

Methods

fromLabel :: Thread -> p #

IsGValue (Maybe Thread) 
Instance details

Defined in GI.GLib.Structs.Thread

type AttributeList Thread 
Instance details

Defined in GI.GLib.Structs.Thread

type AttributeList Thread = ThreadAttributeList
type ParentTypes Thread 
Instance details

Defined in GI.GLib.Structs.Thread

type ParentTypes Thread = '[] :: [Type]