2

X11 Haskell ライブラリのチュートリアルに従おうとしましdrawInWinたが、問題が発生しました。 .

#!/usr/bin/runghc -Wall

module Main where
import Graphics.X11.Xlib
import System.Exit (exitWith, ExitCode(..))
import Control.Concurrent (threadDelay)

main :: IO ()
main = do
 dpy <- openDisplay ""
 let dflt = defaultScreen dpy
     border = blackPixel dpy dflt
     background = whitePixel dpy dflt
 rootw <- rootWindow dpy dflt
 win <- createSimpleWindow dpy rootw 0 0 100 100 1 border background
 setTextProperty dpy win "Hello World" wM_NAME
 mapWindow dpy win
 drawInWin dpy win
 sync dpy False
 threadDelay (10 * 1000000)
 exitWith ExitSuccess

drawInWin :: Display -> Window -> IO ()
drawInWin dpy win = do
 bgcolor <- initColor dpy "green"
 fgcolor <- initColor dpy "blue"
 gc <- createGC dpy win
 setForeground dpy gc bgcolor
 fillRectangle dpy win gc 0 0 100 100
 setForeground dpy gc fgcolor
 fillRectangle dpy win gc 2 2 96 96
 freeGC dpy gc

initColor :: Display -> String -> IO Pixel
initColor dpy color = do
 let colormap = defaultColormap dpy (defaultScreen dpy)
 (apros,real) <- allocNamedColor dpy colormap color
 return $ color_pixel apros

基本的に、いくつかの線を描画するキャンバスを含む単純なウィンドウを作成する必要があります。

そのスニペットで何が間違っていますか?

バージョン:

X11 - 1.5.0.1
GHC - 6.12.1
OS - Linux Mint 10
Xorg - 1:7.5
4

1 に答える 1

3

X11 バインディングの 1.5 リリースには、64 ビットの正確性に関連する多数のバグがあります。これらは 1.6 リリースで修正されているため、アップグレードするとこれらの問題が解決するはずです。

于 2012-11-15T20:55:35.457 に答える