Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / fpc-pascal / 2010-04

Strange behavior with GLib API call

2 messages · 1 person ·

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Matthias Klumpp

Hello!
I am developer of the Listaller Project, a cross-distribution software manager & installer which uses PackageKit and is completely programmed in Pascal. (YES, I better did this in C++, when I started the project two years ago, I decided to play risky)
At time I have a very big problem with a bug reported against the development version of Listaller. (see:
https://bugs.edge.launchpad.net/listaller/+bug/561012 ) Listaller basically is a library, which performs calls on PackageKit (http://packagekit.org) to install/uninstall applications. PackageKit provides an asynchronous GLib2-API which Listaller uses in its library. Now the lib is used by several GUI tools, compiled for Qt4 or GTK+. Those tools call the Listaller API which does the async call on PackageKit. If an Qt4 GUI application does the call, PackageKit processes the command correctly. If a GTK+ application makes it, the command is somehow broken. This only happens on Ubuntu, on Fedora 12 everything works fine. See this listing:
Distribution | Frontend | Works?
Ubuntu | GTK2 | No
Fedora | Qt4 | Yes
Ubuntu | Qt4 | Yes
Fedora | GTK2 | Yes

Can someone guess why this happens? (The PackageKit method uses callbacks and several GLib components like cancellables)
How can the GUI toolkit affect a library procedure? Why does this only happen with Pascal applications? (All I wrote in C++ works just fine)
Why does it only happen, if the PackageKit API call is executed through the library? (If I call the method directly in a GTK+ GUI application, it works too)
I spend days on this bug report and haven't made any progress on it yet. I use Lazarus and FPC, this happens through all versions of Lazarus and FPC I tested.
Would be great if someone could comment on this... Kind regards
Matthias Klumpp

P.S:
You can get the Listaller source code via Git:
git clone git://gitorious.org/listaller/listaller.git (To be compiled with at least Lazarus 0.9.29 and FPC 2.4.1) The relevant unit is packagekit.pas, view it here: http://gitorious.org/listaller/listaller/blobs/master/bindings/packagekit.pas

Reply by email