もりきゅうです。

Yasushi Shoji さんは書きました:
>> というわけで 0.6.9 を RAA に置きます。
>
>seg falultの方ばっちりでした。でもうちの環境だと、<X11/Xutil.h>も 
>includeしてやらないと文句を言って、makeされませんでした。

ほっとしました。^^

Xutil.h は.. extconf.rb で have_header してますが,この check は
通りますよね? どこか必要なところで
#include <X11/Xutil.h>
が抜けてるってことですか?

>で、expose eventの方は、やっぱり同じです。

すみません。説明が足りませんでした。
以下の script を試してくださいませんか。
diamond-event.rb を最近の Ruby/Xlib に合わせて書き換えたものです。

-- diamond-buffer.rb
#!/usr/local/bin/ruby

require 'xlib'

include Math

N = 16

dis = Xlib::Display.new
win = dis.root.new_window(258,258)
pix = win.new_pixmap  # win と同じ大きさの Pixmap を作る
win.title = $0

gc = pix.new_gc  # この gc は pix に描画する
gc.fg = dis.alloc_color(Xlib::Color.new 0xE0A080)
gc.func = Xlib::XOR  # 模様に凝る^^;

x = []
y = []
for i in 0...N
  x[i] = 128.0*cos(2.0*PI*i/N)+128
  y[i] = 128.0*sin(2.0*PI*i/N)+128
  p [x[i],y[i]]
end

for i in 0...N
  for j in (i+1)...N
    gc.draw_line x[i],y[i], x[j],y[j]
  end
end

area = Xlib::Rect.new 0, 0, pix.width, pix.height
POINT_ZERO = Xlib::Point.new 0, 0

win.event 'exposed' do
  print "(exposed)\n"
  pix.copy_area win, gc, area, POINT_ZERO  # pix の画像を win に写す
  dis.flush
end

win.event 'button_press' do |x, y, button|
  exit if button == 3  # 右クリックで終了
end

win.show
dis.flush

while dis.event; end
# ウィンドウの閉じるボタンを押すと dis.event は false を返す
print "(quit)\n"
--

これでうまくいかないようであれば ev.xexpose.count を考えてみます。

----
Kazuhiro Yoshida  moriq.kazuhiro / nifty.ne.jp