@@ -27,8 +27,9 @@ module Graphics.UI.GLUT.Callbacks.Window (
2727 -- * Window close callback
2828 CloseCallback , closeCallback ,
2929
30- -- * Initialize context callback
30+ -- * Life cycle callbacks for mobile platforms
3131 InitContextCallback , initContextCallback ,
32+ AppStatus (.. ), AppStatusCallback , appStatusCallback ,
3233
3334 -- * Keyboard callback
3435 KeyboardCallback , keyboardCallback , keyboardUpCallback ,
@@ -329,6 +330,35 @@ initContextCallback = makeSettableStateVar $
329330
330331--------------------------------------------------------------------------------
331332
333+ -- | The application status of the /current window/
334+
335+ data AppStatus
336+ = AppStatusPause
337+ | AppStatusResume
338+ deriving ( Eq , Ord , Show )
339+
340+ unmarshalAppStatus :: CInt -> AppStatus
341+ unmarshalAppStatus x
342+ | x == glut_APPSTATUS_PAUSE = AppStatusPause
343+ | x == glut_APPSTATUS_RESUME = AppStatusResume
344+ | otherwise = error (" unmarshalAppStatus: illegal value " ++ show x)
345+
346+ --------------------------------------------------------------------------------
347+
348+ -- | An application status callback
349+
350+ type AppStatusCallback = AppStatus -> IO ()
351+
352+ -- | Controls the application status callback for the /current window./
353+
354+ appStatusCallback :: SettableStateVar (Maybe AppStatusCallback )
355+ appStatusCallback = makeSettableStateVar $
356+ setCallback AppStatusCB glutAppStatusFunc
357+ (makeAppStatusFunc . unmarshal)
358+ where unmarshal cb = cb . unmarshalAppStatus
359+
360+ --------------------------------------------------------------------------------
361+
332362-- | A keyboard callback
333363
334364type KeyboardCallback = Char -> Position -> IO ()
0 commit comments