In the meantime I was busy bug-hunting with my Lazarus application on Haiku. Looks like everything is up and running, a few Haiku-Only ‘artifacts’ remain: these do not exist on Linux Qt5 and Windows Win32 Widgeset and Qt5, just on Haiku:
-
I am using UniqueInstanceRaw to make sure my app can be launched only as one instance. This component works by creating a network connection to itself (didn’t look at the finer details yet). This works nicely, but fails if the app crashes: when I kill the app in this case, the network connection is not reset by the app_server / system, so remains blocking the port. Which is why I cannot restart my software without a Haiku restart (network restart only does not solve this situation). The old instance is still reported ‘running’.
-
Exiting the application normally when I am running a data graph simulation at high speed (a new image each 20mS or even faster) is a problem: looks like I deadlock. If I let the simulation run real slow (say slower than a few images per second I can exit the app. If I first stop the simulation I can exit the app as well. This simulation is run by a FPTimer BTW. if I play around with the simulation speed: at approx 20mS I can exit the app if it’s not fullscreen (just drag it a few pixels, that’s enough). At fullscreen I can once exit the app, but second try fails (I have a quit confirmation dialog which is called in event OnCloseQuery, so the first time I cancel the quit, and then the second time around the app hangs. If I go to 1mSec interval or there about, I can never quit the app, fullscreen or small windowed: app hangs.
With hangs I mean the quit confirmation dialog never shows, simulations comes to sudden stop, app does not respond at all anymore.
Of course the problem I am describing here is -not- happening on Linux or Windows, with Qt or Win32.
The above two things are ‘minor’ problems, but would be cool if these could be solved somehow. I am guessing these should be solved inside Haiku or maybe FPC/Lazarus, but not in my app. Seeing the multiplatform behaviour differences.
The third problem is a big one though, which is a real problem for me:
- If you have a Form, with on that form a TPanel, with on that panel a TLabel: the label will never be visible. Not at design time, not at run time. It does not matter one bit if you change panel or label properties like enabled/disabled or so. Design time I can see that the label exists, the dragging dashed line is there with the correct position and size: but no text. If I look at the form text-wise, all seems in order. If I move the label graphically by dragging, or textwise by cutting and pasting the label -outside- the panel: it suddenly appears. Dragging or cut/pasting back: gone.
This problem also does not exist on any other platform or widgeset: just on Haiku (only tested Qt5 there.)
So this problem does not exist (tested):
Linux ARM Qt4, gtk2
Linux x86 Qt4, gtk2
Linux x64 Qt5, gtk2
Windows x86 Qt4, Qt5, Win32
Windos x64 Qt4, Qt5, Win32.
This label thing is nasty because a user is unable to read it and so does not know what’s going on in the app.
Update: I just looked at my posted cross-compiled screenshots from Windows x64: the labels are visible there, so this must be a Lazarus/LCL fault when running on Haiku (only)…
Oh yes: (fourth problem):
- Printer4Lazarus doesn’t work as well: PrinterDialog and PrinterSetupDialog both don’t show.
If on Qt (4,5) I directly call these items in Qt (via the pascal bindings) instead of the Delphi way, then these dialogs show, and work: though no printer shows up, just the Qt PDF printer (and works).
On my Haiku system I have a PCL5 printerdriver for network (HP), and from StyledEdit it indeed prints correctly.
The last thing I need to test is trying to setup a network TCP/IP server connection with a few clients. While Indy10 succesfully compiles (after I add the in haiku’s files in FTP/Lazarus missing IPV6 defines), it does not work. It also does not work on ARM linux, but x64 and x86 Intel Linux/Windows is OK.
Since UniqueInstance is able to setup a network interface it must somehow be possible for me to do that. I guess I’ll look first at Indy, then at Synaser (also has a network component, which I did not add yet btw), and then at how UniqueInstance works, or vice versa.
All in all I think using Lazarus on Haiku x64 is a reasonably success, again (I also tested pre-Beta1, see earlier in this discussion, back then though using cross-compiling from Windows x64). The Haiku version I tested now is href54026.
If the debugger would also work in Lazarus, and the font issues in the editor are fixed, along with at least the TLabel on TPanel issue, I think it’s perfect (enough), even for day to day use.
I hope I can place a few screenshots here in the coming days. Stay tuned.