| Gtk2Hs | Contents | Index

System.Glib.MainLoop

Portability | portable (depends on GHC)
Stability | provisional
Maintainer | gtk2hs-users@lists.sourceforge.net

Description
main event loop, and events
Synopsis

type HandlerId = CUInt
timeoutAdd :: IO Bool -> Int -> IO HandlerId
timeoutAddFull :: IO Bool -> Priority -> Int -> IO HandlerId
timeoutRemove :: HandlerId -> IO ()
idleAdd :: IO Bool -> Priority -> IO HandlerId
idleRemove :: HandlerId -> IO ()

data IOCondition

= IOIn
| IOOut
| IOPri
| IOErr
| IOHup
| IOInvalid

inputAdd :: FD -> [IOCondition] -> Priority -> IO Bool -> IO HandlerId
inputRemove :: HandlerId -> IO ()
type Priority = Int
priorityLow :: Int
priorityDefaultIdle :: Int
priorityHighIdle :: Int
priorityDefault :: Int
priorityHigh :: Int
data MainLoop
mainLoopNew :: Maybe MainContext -> Bool -> IO MainLoop
mainLoopRun :: MainLoop -> IO ()
mainLoopQuit :: MainLoop -> IO ()
mainLoopIsRunning :: MainLoop -> IO Bool
data MainContext
mainContextNew :: IO MainContext
mainContextDefault :: MainContext
mainContextIteration :: MainContext -> Bool -> IO Bool
mainContextFindSourceById :: MainContext -> HandlerId -> IO Source
newtype Source = Source (ForeignPtr Source)
sourceAttach :: Source -> MainContext -> IO HandlerId
sourceSetPriority :: Source -> Priority -> IO ()
sourceGetPriority :: Source -> IO Priority
sourceDestroy :: Source -> IO ()
sourceIsDestroyed :: Source -> IO Bool

Documentation
type HandlerId = CUInt
timeoutAdd :: IO Bool -> Int -> IO HandlerId

Sets a function to be called at regular intervals, with the default priority `priorityDefault`. The function is called repeatedly until it returns `False`, after which point the timeout function will not be called again. The first call to the function will be at the end of the first interval.

Note that timeout functions may be delayed, due to the processing of other event sources. Thus they should not be relied on for precise timing. After each call to the timeout function, the time of the next timeout is recalculated based on the current time and the given interval (it does not try to 'catch up' time lost in delays).

timeoutAddFull :: IO Bool -> Priority -> Int -> IO HandlerId

Sets a function to be called at regular intervals, with the given priority. The function is called repeatedly until it returns `False`, after which point the timeout function will not be called again. The first call to the function will be at the end of the first interval.

Note that timeout functions may be delayed, due to the processing of other event sources. Thus they should not be relied on for precise timing. After each call to the timeout function, the time of the next timeout is recalculated based on the current time and the given interval (it does not try to 'catch up' time lost in delays).

timeoutRemove :: HandlerId -> IO ()
Remove a previously added timeout handler by its `HandlerId`.
idleAdd :: IO Bool -> Priority -> IO HandlerId

Add a callback that is called whenever the system is idle.

- A priority can be specified via an integer. This should usually be `priorityDefaultIdle`.
- If the function returns `False` it will be removed.

idleRemove :: HandlerId -> IO ()
Remove a previously added idle handler by its `HandlerId`.
data IOCondition

Flags representing a condition to watch for on a file descriptor.

`IOIn`
  There is data to read. [`IOOut`] Data can be written (without blocking). [`IOPri`] There is urgent data to read. [`IOErr`] Error condition. [`IOHup`] Hung up (the connection has been broken, usually for pipes and sockets). [`IOInvalid`] Invalid request. The file descriptor is not open.

Constructors

IOIn |
IOOut |
IOPri |
IOErr |
IOHup |
IOInvalid |

Instances

Bounded IOCondition
Enum IOCondition
Eq IOCondition
Flags IOCondition

inputAdd

:: FD | a file descriptor
-> [IOCondition] | the condition to watch for
-> Priority | the priority of the event source
-> IO Bool | the function to call when the condition is satisfied. The function should return False if the event source should be removed.
-> IO HandlerId | the event source id
Adds the file descriptor into the main event loop with the given priority.

inputRemove :: HandlerId -> IO ()
type Priority = Int
Priorities for installing callbacks.
priorityLow :: Int
priorityDefaultIdle :: Int
priorityHighIdle :: Int
priorityDefault :: Int
priorityHigh :: Int
data MainLoop

A main event loop abstraction.

mainLoopNew

:: Maybe MainContext | `context` - the context to use, or `Nothing` to use the default context
-> Bool | `isRunning` - `True` to indicate that the loop is running; `False` otherwise
-> IO MainLoop | the new `MainLoop`
Create a new `MainLoop`.

mainLoopRun :: MainLoop -> IO ()
Runs a main loop until `mainLoopQuit` is called on the loop. If this is called for the thread of the loop's `MainContext`, it will process events from the loop, otherwise it will simply wait.
mainLoopQuit :: MainLoop -> IO ()
Stops a `MainLoop` from running. Any calls to mainLoopRun for the loop will return.
mainLoopIsRunning :: MainLoop -> IO Bool
Checks to see if the main loop is currently being run via mainLoopRun.
data MainContext

An opaque datatype representing a set of sources to be handled in a main loop.

mainContextNew :: IO MainContext
Creates a new `MainContext`.
mainContextDefault :: MainContext
The default `MainContext`. This is the main context used for main loop functions when a main loop is not explicitly specified.
mainContextIteration :: MainContext -> Bool -> IO Bool

Runs a single iteration for the given main loop. This involves checking to see if any event sources are ready to be processed, then if no events sources are ready and `mayBlock` is `True`, waiting for a source to become ready, then dispatching the highest priority events sources that are ready. Note that even when `mayBlock` is `True`, it is still possible for `mainContextIteration` to return FALSE, since the the wait may be interrupted for other reasons than an event source becoming ready.

mainContextFindSourceById :: MainContext -> HandlerId -> IO Source
newtype Source

Constructors

Source (ForeignPtr Source) |

sourceAttach :: Source -> MainContext -> IO HandlerId
sourceSetPriority :: Source -> Priority -> IO ()
sourceGetPriority :: Source -> IO Priority
sourceDestroy :: Source -> IO ()
sourceIsDestroyed :: Source -> IO Bool
Produced by Haddock version 2.4.2