[fpc-pascal] D-Bus. Non blocking listening for signals
dibo20 at wp.pl
dibo20 at wp.pl
Mon Jan 10 19:12:36 CET 2011
W dniu 02.01.2011 23:21, Michael Van Canneyt pisze:
>
>
> On Sun, 2 Jan 2011, dibo20 at wp.pl wrote:
>
>> Hi,
>>
>> Month ago I posted a bug (http://bugs.freepascal.org/view.php?id=18117)
>> Admin give me solution and feedback, but this solution doesn't work
>> well and i think he don't read my last comment.
>> So, maybe someone have this same problem. There is good demo for
>> d-bus rewrited line by line from official C example. It works fine,
>> but this is console demo. This demo listen for signals in main loop.
>> In GUI application, this example blocks user interface. I received a
>> solution to use Application.OnIdle event for check for signal. It
>> works, but not detect all signals. If host send 10 this same signals,
>> my application detect only 4-6.
>> This problem raise after upgrade d-bus interface from 0.92 to 1.2.16
>> two months ago. Previously, I could use timers and threads for
>> listening signals.
>
> The admin (me) did see your comment but didn't find time yet to
> investigate the problem in great length :)
>
> However, it seems that Henry Vermaak gave you a solution. I am glad he
> did, because I have written a complete set of D-BUS components which I
> was about to publish, and they would suffer from the same problem when
> used in a GUI app.
> So now I know that I should create an integration with the Lazarus
> message loop.
>
> Michael.
> _______________________________________________
> fpc-pascal maillist - fpc-pascal at lists.freepascal.org
> http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Sorry for refreshing, but the problem is still present :( . It works
perfect on my mashine (ubuntu 10.10 64 bit) but doesn't work on my
friends computer. For example, one of my friend have this same laptop as
me and exactly this same version of ubuntu (64 bit too). My application
find signals only when he moving mouse cursor over main form (on idle
event is fired in which I check for signals too). It looks like method
dbus_connection_set_wakeup_main_function doesn't register wake up
function properly. This is procedure, not function so I don't even know
if there was error.
I copy source of my program to ubuntu 10.10 32bit on my virtual mashine
and compile on latest SVN version of lazarus (like on 64 bit ubuntu).
This same problem. I debug this and wake up function is never called in
client when dbus host send signals. I have no idea why on 64 bit (and
only on my) it works ok. Some external library is responsible for this?
All computers are upgraded to latest version, so we have this same dbus
library.
Regards
More information about the fpc-pascal
mailing list