From: Kouhei S. <ko...@co...> - 2007-11-12 14:52:15
|
須藤です。 ふと思いついたんですが、rbglib_poll()をこうするというのはど うでしょうか? これだとWindowsでもidleを使わずにすむかもしれません。 手元のDebianではgtk-demoとかRabbitが以前と同じように動きまし た。 Index: src/rbglib_mainloop.c =================================================================== --- src/rbglib_mainloop.c (リビジョン 2692) +++ src/rbglib_mainloop.c (作業コピー) @@ -46,48 +46,16 @@ rbglib_poll (GPollFD *fds, guint nfds, gint timeout) { + gint half_timeout; struct timeval tv; - fd_set rset, wset, xset; - GPollFD *f; - int ready; - int maxfd = 0; - - FD_ZERO (&rset); - FD_ZERO (&wset); - FD_ZERO (&xset); - - for (f = fds; f < &fds[nfds]; ++f) { - if (f->fd >= 0) { - if (f->events & G_IO_IN) - FD_SET (f->fd, &rset); - if (f->events & G_IO_OUT) - FD_SET (f->fd, &wset); - if (f->events & G_IO_PRI) - FD_SET (f->fd, &xset); - if (f->fd > maxfd && (f->events & (G_IO_IN|G_IO_OUT|G_IO_PRI))) - maxfd = f->fd; - } - } - tv.tv_sec = timeout / 1000; - tv.tv_usec = (timeout % 1000) * 1000; - ready = rb_thread_select (maxfd + 1, &rset, &wset, &xset, - timeout == -1 ? NULL : &tv); - if (ready > 0) { - for (f = fds; f < &fds[nfds]; ++f) { - f->revents = 0; - if (f->fd >= 0) { - if (FD_ISSET (f->fd, &rset)) - f->revents |= G_IO_IN; - if (FD_ISSET (f->fd, &wset)) - f->revents |= G_IO_OUT; - if (FD_ISSET (f->fd, &xset)) - f->revents |= G_IO_PRI; - } - } - } + half_timeout = timeout / 2; + + tv.tv_sec = half_timeout / 1000; + tv.tv_usec = (half_timeout % 1000) * 1000; - return ready; + rb_thread_select(0, NULL, NULL, NULL, &tv); + return default_poll_func(fds, nfds, half_timeout); } static void |
From: Masao M. <mu...@hi...> - 2007-11-17 18:21:18
|
むとうです。 Win32で試してみましたがとりあえず動いているようです。 #ちょっとだけパッチ当てましたけど。 On Mon, 12 Nov 2007 23:51:42 +0900 (JST) Kouhei Sutou <ko...@co...> wrote: > 須藤です。 > > ふと思いついたんですが、rbglib_poll()をこうするというのはど > うでしょうか? > これだとWindowsでもidleを使わずにすむかもしれません。 > > 手元のDebianではgtk-demoとかRabbitが以前と同じように動きまし > た。 > > > Index: src/rbglib_mainloop.c > =================================================================== > --- src/rbglib_mainloop.c (リビジョン 2692) > +++ src/rbglib_mainloop.c (作業コピー) > @@ -46,48 +46,16 @@ rbglib_poll (GPollFD *fds, > guint nfds, > gint timeout) > { > + gint half_timeout; > struct timeval tv; > - fd_set rset, wset, xset; > - GPollFD *f; > - int ready; > - int maxfd = 0; > - > - FD_ZERO (&rset); > - FD_ZERO (&wset); > - FD_ZERO (&xset); > - > - for (f = fds; f < &fds[nfds]; ++f) { > - if (f->fd >= 0) { > - if (f->events & G_IO_IN) > - FD_SET (f->fd, &rset); > - if (f->events & G_IO_OUT) > - FD_SET (f->fd, &wset); > - if (f->events & G_IO_PRI) > - FD_SET (f->fd, &xset); > - if (f->fd > maxfd && (f->events & (G_IO_IN|G_IO_OUT|G_IO_PRI))) > - maxfd = f->fd; > - } > - } > - tv.tv_sec = timeout / 1000; > - tv.tv_usec = (timeout % 1000) * 1000; > > - ready = rb_thread_select (maxfd + 1, &rset, &wset, &xset, > - timeout == -1 ? NULL : &tv); > - if (ready > 0) { > - for (f = fds; f < &fds[nfds]; ++f) { > - f->revents = 0; > - if (f->fd >= 0) { > - if (FD_ISSET (f->fd, &rset)) > - f->revents |= G_IO_IN; > - if (FD_ISSET (f->fd, &wset)) > - f->revents |= G_IO_OUT; > - if (FD_ISSET (f->fd, &xset)) > - f->revents |= G_IO_PRI; > - } > - } > - } > + half_timeout = timeout / 2; > + > + tv.tv_sec = half_timeout / 1000; > + tv.tv_usec = (half_timeout % 1000) * 1000; > > - return ready; > + rb_thread_select(0, NULL, NULL, NULL, &tv); > + return default_poll_func(fds, nfds, half_timeout); > } > > static void > > > > ------------------------------------------------------------------------- > This SF.net email is sponsored by: Splunk Inc. > Still grepping through log files to find problems? Stop. > Now Search log events and configuration files using AJAX and a browser. > Download your FREE copy of Splunk now >> http://get.splunk.com/ > _______________________________________________ > ruby-gnome2-devel-ja mailing list > rub...@li... > https://lists.sourceforge.net/lists/listinfo/ruby-gnome2-devel-ja > -- .:% Masao Mutoh<mu...@hi...> |
From: Kouhei S. <ko...@co...> - 2007-11-18 03:02:12
|
須藤です。 In <200...@hi...> "Re: [ruby-gnome2-devel-ja] rglib_poll" on Sun, 18 Nov 2007 03:21:07 +0900, Masao Mutoh <mu...@hi...> wrote: > Win32で試してみましたがとりあえず動いているようです。 それはよかったです。 実は、poll_funcの上書き自体使わなくしたんですよ。 GSourceというやつを使ったんですが、これはGDKのウィンドウシス テムからのイベントのポーリングのところでも使っているやつなの でこっちの方がいいかなぁと。 > #ちょっとだけパッチ当てましたけど。 ありがとうございます。 |
From: Masao M. <mu...@hi...> - 2007-11-26 15:31:46
Attachments:
error_linux.txt
error_win32.txt
|
むとうです。 最新バージョンではLinux/Win32ともエラーが出ました。 #添付ファイルを参照してください。 Linuxは ruby 1.8.6 (2007-03-13 patchlevel 0) [x86_64-linux] GTK+ 2.10.14 Win32は ruby 1.8.5 (2006-12-25 patchlevel 12) [i386-mingw32] GTK+ 2.10.11 です。 On Sun, 18 Nov 2007 23:32:27 +0900 Masao Mutoh <mu...@hi...> wrote: > むとうです。 > > On Sun, 18 Nov 2007 12:02:03 +0900 (JST) > Kouhei Sutou <ko...@co...> wrote: > > > 須藤です。 > > > > In <200...@hi...> > > "Re: [ruby-gnome2-devel-ja] rglib_poll" on Sun, 18 Nov 2007 03:21:07 +0900, > > Masao Mutoh <mu...@hi...> wrote: > > > > > Win32で試してみましたがとりあえず動いているようです。 > > > > それはよかったです。 > > 実は、poll_funcの上書き自体使わなくしたんですよ。 > > GSourceというやつを使ったんですが、これはGDKのウィンドウシス > > テムからのイベントのポーリングのところでも使っているやつなの > > でこっちの方がいいかなぁと。 > > いいアイデアだと思いました。 > すっきりして良いですね。やはり、GLibが提供しているものは > 積極的に利用した方がいいですね。 > > -- > .:% Masao Mutoh<mu...@hi...> > > > ------------------------------------------------------------------------- > This SF.net email is sponsored by: Microsoft > Defy all challenges. Microsoft(R) Visual Studio 2005. > http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ > _______________________________________________ > ruby-gnome2-devel-ja mailing list > rub...@li... > https://lists.sourceforge.net/lists/listinfo/ruby-gnome2-devel-ja > -- .:% Masao Mutoh<mu...@hi...> |
From: Masao M. <mu...@hi...> - 2007-11-27 16:43:12
|
むとうです。 On Tue, 27 Nov 2007 20:57:17 +0900 (JST) Kouhei Sutou <ko...@co...> wrote: > 須藤です。 > > > 最新バージョンではLinux/Win32ともエラーが出ました。 > > #添付ファイルを参照してください。 > > > > Linuxは > > ruby 1.8.6 (2007-03-13 patchlevel 0) [x86_64-linux] > > GTK+ 2.10.14 > > p0でもビルドできるようにしました。 > > > Win32は > > ruby 1.8.5 (2006-12-25 patchlevel 12) [i386-mingw32] > > GTK+ 2.10.11 > > 1.8.5だとruby_thread_tが外に出ていなかったんですね。 > 前の方法を使うようにしないといけないかもしれません。 > > > ところで、Ruby-GNOME2はどのバージョンのRubyまでサポートした > いでしょうか?1.8.x全部ですか? > たぶん、Ruby-GNOME2の新しいバージョンを使いたいということは > GTK+とかの新しいバージョンで導入された機能を使いたいというこ > とがほとんどだと思うのですが、GTK+だけ新しくてRubyが古いとい > うのは考えにくい気がします。 うーん、ほんとは(というより少なくとも今までは)1.8.x全部のつもり でしたが・・・。 ま、この際、1.8.6以降に限定しちゃいますか。 > Ruby-GNOME2のx.x.xではRuby 1.8.0以上対応、x.x.yではRuby > 1.8.1以上対応、みたいなことはどうでしょうか?あと、同じよう > に対応するGTK+などのバージョンもあげていくのもどうでしょうか? 今回は、ruby 1.8.5と1.8.6の間に大きな非互換性がある、という理由が あるのでやむをえないとは思いますが、なるべくは積極的にバージョンを 上げていくのは避けたいですねぇ。 ところで、前回の実装に比べて今回の実装はだいぶ複雑になった感じがする のですが、なんで、前回の実装だとまずくて、今回の実装だとよいのですか? #正直、enの方での議論、ついていけませんでした。simple and wrong, #と言われたのは知ってるのですが、何が(具体的に)wrongなんでしたっけ? -- .:% Masao Mutoh<mu...@hi...> |
From: Masao M. <mu...@hi...> - 2007-11-28 14:01:56
|
むとうです。 On Wed, 28 Nov 2007 21:01:46 +0900 (JST) Kouhei Sutou <ko...@co...> wrote: > 須藤です。 > > > ところで、前回の実装に比べて今回の実装はだいぶ複雑になった感じがする > > のですが、なんで、前回の実装だとまずくて、今回の実装だとよいのですか? > > 私にとってはUSE_POLLがなくなったことです。 もしかして、0.16.0までとの差を言っていますか? そうではなくて、ここで言っている「前回」とは、最初にUSE_POLLをなくした バージョンの ことです。1回目の改修はだいぶすっきりしたというのがわかったのですが、 2回目の改修で、すっきり感がなくなってしまったので。 言い換えれば、1回目の改修でまずい点で2回目の改修で改善したポイントを 知りたいです。 > 一般的にはg_timeout_addなしで動くことだと思います。 > それにはまだ作業が必要ですが。 > > #正直、enの方での議論、ついていけませんでした。simple and wrong, > > #と言われたのは知ってるのですが、何が(具体的に)wrongなんでしたっけ? > > pollingです。たぶん。 それに対して、須藤さんはどう考えているんでしたっけ? 最新の実装は結局pollingですよね。そこは無視? -- .:% Masao Mutoh<mu...@hi...> |
From: Kouhei S. <ko...@co...> - 2007-11-28 14:21:20
|
須藤です。 In <200...@hi...> "Re: [ruby-gnome2-devel-ja] rglib_poll" on Wed, 28 Nov 2007 23:01:39 +0900, Masao Mutoh <mu...@hi...> wrote: > そうではなくて、ここで言っている「前回」とは、最初にUSE_POLLをなくした > バージョンの > ことです。1回目の改修はだいぶすっきりしたというのがわかったのですが、 > 2回目の改修で、すっきり感がなくなってしまったので。 > > 言い換えれば、1回目の改修でまずい点で2回目の改修で改善したポイントを > 知りたいです。 pollingが無くなりました。 そして、Windowsでも動いてほしいと思っています。 > > 一般的にはg_timeout_addなしで動くことだと思います。 > > それにはまだ作業が必要ですが。 > > > #正直、enの方での議論、ついていけませんでした。simple and wrong, > > > #と言われたのは知ってるのですが、何が(具体的に)wrongなんでしたっけ? > > > > pollingです。たぶん。 > > それに対して、須藤さんはどう考えているんでしたっけ? もともとそれは直すつもりで、今は手元ではそれっぽく動いていま す。まだやることはあると思っています。 > 最新の実装は結局pollingですよね。そこは無視? 今のやつはpollingではないはずです。 何もないときはpollでブロックしているはずです。 |
From: Kouhei S. <ko...@co...> - 2007-11-28 12:01:59
|
須藤です。 > > ところで、Ruby-GNOME2はどのバージョンのRubyまでサポートした > > いでしょうか?1.8.x全部ですか? > > たぶん、Ruby-GNOME2の新しいバージョンを使いたいということは > > GTK+とかの新しいバージョンで導入された機能を使いたいというこ > > とがほとんどだと思うのですが、GTK+だけ新しくてRubyが古いとい > > うのは考えにくい気がします。 > > うーん、ほんとは(というより少なくとも今までは)1.8.x全部のつもり > でしたが・・・。 > ま、この際、1.8.6以降に限定しちゃいますか。 > > Ruby-GNOME2のx.x.xではRuby 1.8.0以上対応、x.x.yではRuby > > 1.8.1以上対応、みたいなことはどうでしょうか?あと、同じよう > > に対応するGTK+などのバージョンもあげていくのもどうでしょうか? > > 今回は、ruby 1.8.5と1.8.6の間に大きな非互換性がある、という理由が > あるのでやむをえないとは思いますが、なるべくは積極的にバージョンを > 上げていくのは避けたいですねぇ。 わかりました。 > ところで、前回の実装に比べて今回の実装はだいぶ複雑になった感じがする > のですが、なんで、前回の実装だとまずくて、今回の実装だとよいのですか? 私にとってはUSE_POLLがなくなったことです。 私にとって、ifdefはダメージが大きいようです。 一般的にはg_timeout_addなしで動くことだと思います。 それにはまだ作業が必要ですが。 > #正直、enの方での議論、ついていけませんでした。simple and wrong, > #と言われたのは知ってるのですが、何が(具体的に)wrongなんでしたっけ? pollingです。たぶん。 |
From: Kouhei S. <ko...@co...> - 2007-11-27 11:57:23
|
須藤です。 > 最新バージョンではLinux/Win32ともエラーが出ました。 > #添付ファイルを参照してください。 > > Linuxは > ruby 1.8.6 (2007-03-13 patchlevel 0) [x86_64-linux] > GTK+ 2.10.14 p0でもビルドできるようにしました。 > Win32は > ruby 1.8.5 (2006-12-25 patchlevel 12) [i386-mingw32] > GTK+ 2.10.11 1.8.5だとruby_thread_tが外に出ていなかったんですね。 前の方法を使うようにしないといけないかもしれません。 ところで、Ruby-GNOME2はどのバージョンのRubyまでサポートした いでしょうか?1.8.x全部ですか? たぶん、Ruby-GNOME2の新しいバージョンを使いたいということは GTK+とかの新しいバージョンで導入された機能を使いたいというこ とがほとんどだと思うのですが、GTK+だけ新しくてRubyが古いとい うのは考えにくい気がします。 Ruby-GNOME2のx.x.xではRuby 1.8.0以上対応、x.x.yではRuby 1.8.1以上対応、みたいなことはどうでしょうか?あと、同じよう に対応するGTK+などのバージョンもあげていくのもどうでしょうか? # #ifdefがたくさんあると見づらい。。。 |
From: Masao M. <mu...@hi...> - 2007-11-18 14:32:36
|
むとうです。 On Sun, 18 Nov 2007 12:02:03 +0900 (JST) Kouhei Sutou <ko...@co...> wrote: > 須藤です。 > > In <200...@hi...> > "Re: [ruby-gnome2-devel-ja] rglib_poll" on Sun, 18 Nov 2007 03:21:07 +0900, > Masao Mutoh <mu...@hi...> wrote: > > > Win32で試してみましたがとりあえず動いているようです。 > > それはよかったです。 > 実は、poll_funcの上書き自体使わなくしたんですよ。 > GSourceというやつを使ったんですが、これはGDKのウィンドウシス > テムからのイベントのポーリングのところでも使っているやつなの > でこっちの方がいいかなぁと。 いいアイデアだと思いました。 すっきりして良いですね。やはり、GLibが提供しているものは 積極的に利用した方がいいですね。 -- .:% Masao Mutoh<mu...@hi...> |