summaryrefslogtreecommitdiffstats
path: root/lib/Phi/Widget.hs
diff options
context:
space:
mode:
authorMatthias Schiffer <mschiffer@universe-factory.net>2011-07-14 22:50:03 +0200
committerMatthias Schiffer <mschiffer@universe-factory.net>2011-07-14 22:50:03 +0200
commit55edb549a5b8d86821e360d2d9e19a889d59b4b9 (patch)
treea5f831f0110e71ce2e83474125eaa17332f16081 /lib/Phi/Widget.hs
parent861fa81d8503b64023777ec815845361bbcc2885 (diff)
downloadphi-55edb549a5b8d86821e360d2d9e19a889d59b4b9.tar
phi-55edb549a5b8d86821e360d2d9e19a889d59b4b9.zip
Use Cairo for background rendering
Diffstat (limited to 'lib/Phi/Widget.hs')
-rw-r--r--lib/Phi/Widget.hs13
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