[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