Re: Follow up on wierd bug -- timing issue
- From: John Harper <jsh unfactored org>
- To: dataangel <k04jg02 kzoo edu>
- Cc: sawfish-list gnome org
- Subject: Re: Follow up on wierd bug -- timing issue
- Date: Tue, 22 Mar 2005 23:02:54 -0800
it's probably a grab issue - gtk is trying to grab keyboard and
mouse, but sawfish still has an active grab on the keyboard from the
key event. The sawfish menu command does this to avoid the problem:
;; This function is probably called from a ButtonPress event,
;; so cancel the implicit pointer grab (to allow the
menu's grab
;; to succeed)
(ungrab-pointer)
(ungrab-keyboard)
(sync-server t)
alternatively maybe your gtk code could loop until the menu can be
displayed..
John
On Mar 22, 2005, at 2:43 PM, dataangel wrote:
I ran some more tests with Eric Mangold (he was helping me over
IRC) and found that the bindings do work _if_ I put a small sleep
before I call gtk.main(), which suggests that this is some sort of
timing issue, maybe with the change in the pipe being detected by
my app before sawfish thinks the echo is "done." But I'm not sure.
To make sure it wasn't specific to named pipes I reimplemented the
same app to use signals instead, and sure enough if the shell
command is "kill -s 10 myapppid" the exact same problem occurs.
teratorn ran strace and found that gtk.main() is continuing to run
in the background -- it's not frozen. The issue is that the only
way for gtk.main() to quit is for my menu to appear, and for the
user to select something in the menu for them to click outside the
menu. However, because the menu never actually appears because of
this mysterious timing bug, gtk.main() just goes on forever.
dataangel wrote:
I'm working a python app right now. It persistently runs in the
background, and then when the string "show-menu" is put into a
named pipe called menutriggerpipe, the app reads this and has a
menu popup.
If I do "echo show-menu >> menutriggerpipe" by hand in the
console, this works. If I run sawfish-client and do (system "echo
show-menu >> menutriggerpipe") this works. If I bind the shell
command to a key in OpenBox, this works.
If I bind it to a key using either the Bindings configurer or by
hand in my .sawfishrc, this does not work with sawfish. My app
uses the pygtk library and will get stuck indefinitely in gtk.main
() and never draw the menu for some reason if I have sawfish do
the message through a binding. The message is received, and it is
the correct message, but for some reason completely unbeknownst to
me gtk.main() will get stuck.
At first I thought this maybe a pygtk bug, but seeing as it works
by hand in the terminal, in sawfish-client, and it works as a
binding in OpenBox, I figure it has to be a sawfish bug.
If someone needs my code to fix it let me know,
dataangel
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]