[fpc-pascal] Strange behavior with GLib API call
matthias at nlinux.org
Sun Apr 18 15:07:02 CEST 2010
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:
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
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
Would be great if someone could comment on this...
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:
More information about the fpc-pascal