[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[mgp-users-jp 01384] Re: 1.11aのリ リース



In article <>, nishida@csl.sony.co.jp writes:
> ああ、なるほど。XMoveWindowすることを前提にコードを考えてしまっていました。
> ということで書き直してみました。

まだコミットされていないようだし、パッチも CVS update した
draw.c に対しては fail するのでこちらでは試していませんが、
ちょっとおかしいと思います。そちらではこれでちゃんと動作しま
した?

! 	if (!use_copy){
! 		cutinWin = XCreateSimpleWindow(display, state->target,
! 			sx, ly, state->linewidth, state->maxascent + state->maxdescent,
! 			0, fore_color[caching], back_color[caching]);
! 		XSetWindowBackgroundPixmap(display, cutinWin, None);
! 		XMapSubwindows(display, state->target);
! 	} else {
! 		copywin = XGetImage(display, window, state->xoff, ly + state->yoff, state->linewidth + abs(lx - sx),	
! 					state->maxascent + state->maxdescent, AllPlanes, ZPixmap);
! 	}
  
上記の XGetImage の引数 X は state->xoff + MIN (sx, lx) じゃ
ないでしょうか?

  	xoff = state->xoff;	
  	yoff = state->yoff;	
  	state->xoff = state->yoff = 0;
  	if (state->obj) {
! 		if (use_copy)
! 			obj_draw(state, state->target, x + xoff, ly + yoff);

この時点で x はまだ設定されていません。そもそも use_copy の
場合ここでは obj_draw は必要ないはずです。

  	x = sx;
  	for (i = 0; i < round; i++) {
! 		if (use_copy && state->obj) 
! 				obj_draw(state, state->target, x + xoff, ly + yoff);
! 		else 
! 				XMoveWindow(display, cutinWin, x + xoff, ly + yoff);
  		XFlush(display);
  		usleep(CUTIN_DELAY);
+ 		if (use_copy && state->obj) {
+ 			XPutImage(display, state->target, gc_cache, copywin, 
+ 				x, 0, x + xoff, ly + yoff, 
+ 				state->linewidth, state->maxascent + state->maxdescent);
+ 		}

XPutImage の引数 SRC_X は x - MIN (sx, lx) じゃないでしょう
か。

−− 半田@AIST
      handa@m17n.org