From: KATO K. <ka...@zb...> - 2003-03-19 03:39:52
|
こんにちは。和良です。 On Wed, 19 Mar 2003 10:58:21 +0900 (JST) Tomohiro KUBOTA <ku...@de...> wrote: > > > > echo -e "\x1b]5379;wall_picture=foo\x07" > > > > echo -e "\x1b]5379;wall_picture=bar\x07" > > > > > > > > とやると、最初は壁紙が foo になるのですが、次に壁紙が bar になりません。 > > > > > > 変ですね、手元では再現しませんでした。 > > > > configure --with-imagelib に依存するようです。imlib だとうまく > > いきましたが、gdk-pixbuf1 や gdk-pixbuf2 だと不具合が再現しました。 > > 続報です。最新の cvs リビジョンで、xwindow/x_imagelib_gdk.c だけを > 過去のリビジョンのものを持ってきて、試してみました。 > > すると、xwindow_x_imagelib_gdk.c のりビジョンが 1.61 までは問題が > おきませんでしたが、1.62 にすると、この問題が発生しました。 みなみさんじゃないけど、追っかけてみました。 cache が有るかどうかの判定が上手くいかなくて、昔の画像 (久保田さんの例 だと foo) を cache から引っ張ってきてしまうようです。 安易にファイル名での判定を加えてみましたけど、これでどうでしょうか。 -- KATO Kazuyoshi +++[>+++++[>+++++<-]<-]>>.----------.>+++++[<+ ++++>-]<.-----.++++.----------.++++.-----------.+.>++++++++++. Index: x_imagelib_gdk.c =================================================================== RCS file: /cvsroot/mlterm/mlterm/xwindow/x_imagelib_gdk.c,v retrieving revision 1.63 diff -u -r1.63 x_imagelib_gdk.c --- x_imagelib_gdk.c 6 Mar 2003 05:48:50 -0000 1.63 +++ x_imagelib_gdk.c 19 Mar 2003 03:36:19 -0000 @@ -1479,6 +1479,7 @@ { static x_picture_modifier_t * cached_mod = NULL ; static GdkPixbuf * cached_pixbuf = NULL ; + static char * cached_pixbuf_file_path = NULL ; GdkPixbuf * pixbuf ; Pixmap pixmap ; @@ -1493,6 +1494,7 @@ } if( cached_pixbuf + && (strcmp( file_path, cached_pixbuf_file_path) == 0) && (is_picmod_eq( pic_mod, cached_mod)) && ACTUAL_WIDTH(win) == gdk_pixbuf_get_width( cached_pixbuf) && ACTUAL_HEIGHT(win) == gdk_pixbuf_get_height( cached_pixbuf)) @@ -1510,7 +1512,10 @@ { free(cached_mod) ; } + if( cached_pixbuf_file_path) + free(cached_pixbuf_file_path); cached_pixbuf = gdk_pixbuf_copy(pixbuf) ; + cached_pixbuf_file_path = strdup( file_path) ; if( !is_picmod_eq( pic_mod, NULL) ) modify_image( cached_pixbuf, pic_mod) ; if( pic_mod) |