Fix background update race, speed up rendering!

This commit is contained in:
Matthias Schiffer 2011-07-22 22:36:43 +02:00
parent 906dc08d3e
commit de1dc32b33

View file

@ -208,8 +208,9 @@ updatePanels dispvar = do
let screen = defaultScreen disp
visual = defaultVisual disp screen
buffer <- liftIO $ withDimension area $ Util.createXlibSurface disp pixmap visual
xbuffer <- liftIO $ withDimension area $ Util.createXlibSurface disp pixmap visual
liftIO $ (withDimension area $ withSimilarSurface xbuffer ContentColor) $ \buffer -> do
renderWith buffer $ do
withPatternForSurface rootImage $ \pattern -> do
save
@ -218,8 +219,12 @@ updatePanels dispvar = do
paint
restore
Widget.renderWidgets layoutedWidgets $ panelScreenArea panel
renderWith xbuffer $ do
withPatternForSurface buffer $ \pattern -> do
setSource pattern
paint
surfaceFinish buffer
surfaceFinish xbuffer
-- copy buffer to window
liftIO $ do
@ -266,7 +271,12 @@ updateRootImage disp = do
bg <- gets phiRootImage
when (pixmap /= 0) $ do
case pixmap of
0 -> do
renderWith bg $ do
setSourceRGB 0 0 0
paint
_ -> do
rootSurface <- liftIO $ Util.createXlibSurface disp pixmap visual (fromIntegral rootWidth) (fromIntegral rootHeight)
renderWith bg $ withPatternForSurface rootSurface $ \pattern -> do