reverseVideo from perl module
Jochen Keil
jochen.keil at gmail.com
Thu Sep 2 22:46:28 CEST 2010
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hi Marc,
thanks for all your great help and especially the pointer to
AnyEvent::DBus.
I've attached a working version of my plugin which is now thread free
and really simple. There is one more issue though.
After closing the terminal (by pressing C-d or typing exit/logout) the
process will keep running. The terminal window vanishes but the process
is still alive.
I think that the AnyEvent Loop does not get shut down. I've played a bit
and found out that this is not a problem with DBus or AnyEvent::DBus
since this problem occurs also if i attach just a simple
AnyEvent->signal() handler.
I tried killing '$$' as a naive approach but this isn't to good for
urxvtd. :)
Any hints on that?
Best Regards,
Jochen
On 31.08.2010 16:52, Marc Lehmann wrote:
> On Tue, Aug 31, 2010 at 03:27:03PM +0200, Jochen Keil
<jochen.keil at gmail.com> wrote:
>> Cmd_parse("\033[?5h") respectively cmd_parse("\033[?5l") do the
>> trick for me. However i'm having a problem with $self->refresh().
>> It doesn't happen instantly. The terminal only gets refreshed if I
>> hit a key (it is not necessary that the terminal is focused
>> though).
>
> That's one of the problems you run into threads with. While you
> might be able to hack around it, your plug-in is already prone to
> crash as it is due to race conditions.
>
>> The plugin works so far (for me), but I don't know how it would
>> behave without threads.
>
> It's broken with or without the windows process emulation
> ("threads").
>
>> Writing it without threads would be tedious though since I'd have
>> to use pipes (would a pipe in /tmp be portable anyway?).
>
> I don't see why you would need to use a pipe - there are many
> exmaples of using Net::DBus without any pipes.
>
> For example AnyEvent::DBus let's you integrate dbus into urxvt, but
> you could also register your own I/O watcher for dbus (note that
> Net::DBus uses libdbus, which can freeze urxvt for long amounts of
> time).
>
>> hacker (honestly these are my first steps with perl..) but I have
>> enough experience with other languages (e.g. tcl which is quite
>> comparable).
>
> libdbus makes itself hard to use, unfortunately...
>
>>> windows process emulation code, so you have to fix the race
>>> conditions that ensue somehow (e.g. by not calling urxvt
>>> functions from any other "thread" than the urxvt one).
>> My plugin now isn't dependant on locks anymore.. yet there is
>> still the problem with refreshing. I could set a 1s timer but I'm
>> not to fond of polling.
>
> *any* modification of global data you do from another thread (the
> process emulation uses C-level-threads to emulate processes, hence
> the name) is prone to crashes, unless you lock (which you can't, as
> urxvt itself would have to look everywhere and everytime, which it
> doesn't of course).
>
> you might get away with it because the chances are low, but calling
> methods and adding timers etc. will sooner or later crash for
> program.
>
- --
?
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
iEYEARECAAYFAkyADSMACgkQtVwvsA+W4CCwTwCbBItyXjsKb7G1WG69tq0LkB9E
dMUAoJHIMcIYvL0pszSaUsFsznX4o8b+
=2qTt
-----END PGP SIGNATURE-----
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: rvid-on-brightnesschange
URL: <http://lists.schmorp.de/pipermail/rxvt-unicode/attachments/20100902/8f1b0a41/attachment.ksh>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: rvid-on-brightnesschange.sig
Type: application/pgp-signature
Size: 72 bytes
Desc: not available
URL: <http://lists.schmorp.de/pipermail/rxvt-unicode/attachments/20100902/8f1b0a41/attachment.sig>
More information about the rxvt-unicode
mailing list