diff options
author | Matthias Schiffer <mschiffer@universe-factory.net> | 2011-07-14 22:50:03 +0200 |
---|---|---|
committer | Matthias Schiffer <mschiffer@universe-factory.net> | 2011-07-14 22:50:03 +0200 |
commit | 55edb549a5b8d86821e360d2d9e19a889d59b4b9 (patch) | |
tree | a5f831f0110e71ce2e83474125eaa17332f16081 /lib/Phi/Widget.hs | |
parent | 861fa81d8503b64023777ec815845361bbcc2885 (diff) | |
download | phi-55edb549a5b8d86821e360d2d9e19a889d59b4b9.tar phi-55edb549a5b8d86821e360d2d9e19a889d59b4b9.zip |
Use Cairo for background rendering
Diffstat (limited to 'lib/Phi/Widget.hs')
-rw-r--r-- | lib/Phi/Widget.hs | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/lib/Phi/Widget.hs b/lib/Phi/Widget.hs index d28c21d..e0d051b 100644 --- a/lib/Phi/Widget.hs +++ b/lib/Phi/Widget.hs @@ -1,6 +1,7 @@ {-# LANGUAGE ExistentialQuantification, TypeFamilies, StandaloneDeriving, FlexibleContexts #-} -module Phi.Widget ( Display +module Phi.Widget ( Display(..) + , withDisplay , Widget(..) , WidgetClass(..) , WidgetState(..) @@ -11,7 +12,6 @@ module Phi.Widget ( Display , handleMessageWidgets ) where -import Control.Concurrent import Control.Monad import Data.Traversable @@ -23,7 +23,14 @@ import Graphics.Rendering.Cairo import Phi.Phi -type Display = MVar Graphics.X11.Xlib.Display +newtype Display = Display Graphics.X11.Xlib.Display + +withDisplay :: Display -> (Graphics.X11.Xlib.Display -> IO a) -> IO a +withDisplay (Display disp) f = do + Graphics.X11.Xlib.lockDisplay disp + a <- f disp + Graphics.X11.Xlib.unlockDisplay disp + return a class Show a => WidgetClass a where |