[GELÖST] Lange Zeit zwischen FormCreate und FormActivate

Rund um die LCL und andere Komponenten
petwey
Beiträge: 83
Registriert: Sa 24. Nov 2012, 19:00
OS, Lazarus, FPC: Windows10 und Linux 32 und 64Bit (L 2.2.2 FPC 3.2.2)
CPU-Target: 32Bit und 64Bit

[GELÖST] Lange Zeit zwischen FormCreate und FormActivate

Beitrag von petwey »

Hallo Forum,

ich habe ein Programm, das zu umfangreich ist um es hier auch nur anstatzweise zu posten, deshalb muss ich den Fehler beschreiben.

Das Programm läuft fehlerfrei aber mir ist aufgefallen, besonders da ich von Windows nach Linux umgezogen bin, das zwischen dem Ende von FormCreate und FormActivate eine sehr lange Zeit vergeht hier mehr als 30s und ich kann nicht nachvollziehen woran das liegt. Ich glaube nicht, das es mit Windows und / oder Linux zusammenhägt.

Ich habe mir ein Log-Fenster gebastelt und sämtlichen Funktionen des Programms Loggen jetzt einen Eintrag mit Zeitstempel ins Log-Fenster. Da kommen allerdings nur ein paar Meldungen an und ich weiß immer noch nicht wo das Loch zu suchen ist.

Das ist die Ausgabe meines Log-Fensters, bis zur Anzeige der Oberfläche:

Code: Alles auswählen

30-10-22 18:57:34 MainFrm Create

30-10-22 18:58:05 MainFrm Activate
30-10-22 18:58:05 acGrobExecute
30-10-22 18:58:05 pgStuetzChange
30-10-22 18:58:05 panAblaufHeadPaint
30-10-22 18:58:05 panAblaufHeadPaint"
Man sieht schön die zeitliche Differenz zwischen Create und Activate.

Ich hatte noch die Vermutung das eine meiner diversen anderen Formulare die ich noch verwende das Problem verursachen, aber mit der gleichen Methode bin ich hier auch nicht weiter gekommen. Hier der Auszug aus der lpr-Datei

Code: Alles auswählen

begin
  RequireDerivedFormResource:=True;
  Application.Scaled:=True;
  Application.Initialize;
  Application.CreateForm(TfrmMain, frmMain);
  Application.CreateForm(TfrmLogMessages, frmLogMessages);
  Application.CreateForm(TfrmRowProp, frmRowProp);
  Application.CreateForm(TformMachine, formMachine);
  Application.CreateForm(TFormRowSelectEditor, FormRowSelectEditor);
  Application.CreateForm(TformClassification, formClassification);
  Application.CreateForm(TfrmHighlight, frmHighlight);
  Application.CreateForm(TfrmCharacValEdit, frmCharacValEdit);
  Application.CreateForm(Tfrm_MU, frm_MU);
  Application.CreateForm(TfrmLineMarkProp, frmLineMarkProp);
  Application.CreateForm(TfrmHysterese, frmHysterese);
  Application.CreateForm(TfrmValidate, frmValidate);
  Application.Run;
end."
Habt ihr einen Tip wie man das Problem einkreisen kann oder vielleicht hattet ihr ja mal ein ähnliches Problem.

Bitte um Hilfe.
Zuletzt geändert von petwey am Mo 21. Nov 2022, 20:49, insgesamt 1-mal geändert.
MfG,
petwey

Windows 10 und Linux 32 und 64Bit (L 2.2.2 FPC 3.2.2)

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6209
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Lange Zeit zwischen FormCreate und FormActivate

Beitrag von af0815 »

Für mich, hast du zuviel automatisch erzeugte Formulare. Ich erzeuge nur das Mainform und das soll sich dann um alles andere kümmern. Ist aber eine Designentscheidung.

Zu der Besonderheit mit dem langen Zeitraum zwischen Create und Activate. Es gab da eine Diskussion weil sowas scheinbar unter Gtk2 auftreten kann und da ging es um ein TimeOut mit DBus oder so ähnlich. Aber an do eine richtige Abhilfe kann ich mich nicht erinnern. Siehe mal hier https://forum.lazarus.freepascal.org/in ... ic=51016.0 - ich habe das dann nicht mehr genau verfolgt.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: Lange Zeit zwischen FormCreate und FormActivate

Beitrag von Winni »

Hi!

Das liegt nicht an der Menge der automatisch erzeugten Formulare.Das sind Sekundenbruchteile, außer es steht in FormCreate ganz wildes Zeugs.

Das war vor 3 oder 4 Jahren ein Problem mit gtk2. Das ist aber inzwischen behoben worden. Wie lauten Name und Version Deiner Linux-Distro? Falls das Debian oder Stiefinder sind, kann das sein, dass das Problem da noch nicht behoben ist.

Ich würde mal sagen: Aktuelle Linix-Distro außerhalb des Debian-Dunstkreises nehmen und das Problem ist behoben.

Winni

petwey
Beiträge: 83
Registriert: Sa 24. Nov 2012, 19:00
OS, Lazarus, FPC: Windows10 und Linux 32 und 64Bit (L 2.2.2 FPC 3.2.2)
CPU-Target: 32Bit und 64Bit

Re: Lange Zeit zwischen FormCreate und FormActivate

Beitrag von petwey »

Hallo winni,

cat /etc/*release

ergab

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=22.04
DISTRIB_CODENAME=jammy
DISTRIB_DESCRIPTION="Ubuntu 22.04.1 LTS"
PRETTY_NAME="Ubuntu 22.04.1 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.1 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and- ... acy-policy"
UBUNTU_CODENAME=jammy

Wie bringt mich das weiter? Ich kann nicht so einfach auf eine andere Linux-Distribution wechseln.
MfG,
petwey

Windows 10 und Linux 32 und 64Bit (L 2.2.2 FPC 3.2.2)

petwey
Beiträge: 83
Registriert: Sa 24. Nov 2012, 19:00
OS, Lazarus, FPC: Windows10 und Linux 32 und 64Bit (L 2.2.2 FPC 3.2.2)
CPU-Target: 32Bit und 64Bit

Re: Lange Zeit zwischen FormCreate und FormActivate

Beitrag von petwey »

Hallo Forum,

ich habe noch weitere Informationen nachdem ich mir den Link von af0815 angesehen habe:

die GTK-Versionen ermittelt mit: dpkg -l "*gtk*" | grep ii

Code: Alles auswählen

ii  appmenu-gtk-module-common          0.7.6-2                         all          Common files for GtkMenuShell D-Bus exporter
ii  appmenu-gtk2-module:amd64          0.7.6-2                         amd64        GtkMenuShell D-Bus exporter (GTK+2.0)
ii  fp-units-gtk2-3.2.2:amd64          3.2.2+dfsg-9ubuntu1             amd64        Free Pascal - GTK+ 2.x units
ii  gir1.2-gtk-2.0:amd64               2.24.33-2ubuntu2                amd64        GTK graphical user interface library -- gir bindings
ii  gir1.2-gtk-3.0:amd64               3.24.33-1ubuntu2                amd64        GTK graphical user interface library -- gir bindings
ii  gir1.2-gtksource-3.0:amd64         3.24.11-2build1                 amd64        gir files for the GTK+ syntax highlighting widget
ii  gir1.2-gtksource-4:amd64           4.8.3-1                         amd64        gir files for the GTK+ syntax highlighting widget
ii  greybird-gtk-theme                 3.23.1-0ubuntu1                 all          grey GTK+ theme from the Shimmer Project
ii  gstreamer1.0-gtk3:amd64            1.20.3-0ubuntu1                 amd64        GStreamer plugin for GTK+3
ii  gtk-update-icon-cache              3.24.33-1ubuntu2                amd64        icon theme caching utility
ii  gtk2-engines-murrine:amd64         0.98.2-3build2                  amd64        cairo-based gtk+-2.0 theme engine
ii  gtk2-engines-pixbuf:amd64          2.24.33-2ubuntu2                amd64        pixbuf-based theme for GTK 2
ii  lazarus-ide-gtk2-2.2               2.2.0+dfsg1-5ubuntu1            amd64        IDE for Free Pascal - GTK+ version
ii  lcl-gtk2-2.2                       2.2.0+dfsg1-5ubuntu1            amd64        Lazarus Components Library - GTK+ backend
ii  libappmenu-gtk2-parser0:amd64      0.7.6-2                         amd64        GtkMenuShell to GMenuModel parser (GTK+2.0)
ii  libavahi-ui-gtk3-0:amd64           0.8-5ubuntu5                    amd64        Avahi GTK+ User interface library for GTK3
ii  libcanberra-gtk3-0:amd64           0.30-10ubuntu1                  amd64        GTK+ 3.0 helper for playing widget event sounds with libcanberra
ii  libcanberra-gtk3-module:amd64      0.30-10ubuntu1                  amd64        translates GTK3 widgets signals to event sounds
ii  libdbusmenu-gtk3-4:amd64           16.04.1+18.10.20180917-0ubuntu8 amd64        library for passing menus over DBus - GTK+ version
ii  libfm-gtk-data                     1.3.2-1                         all          file management support (GTK+ library common data)
ii  libfm-gtk4:amd64                   1.3.2-1                         amd64        file management support (GTK+ 2.0 GUI library)
ii  libgarcon-gtk3-1-0:amd64           4.16.1-1                        amd64        menu library for Xfce (GTK3 library)
ii  libgtk-3-0:amd64                   3.24.33-1ubuntu2                amd64        GTK graphical user interface library
ii  libgtk-3-0:i386                    3.24.33-1ubuntu2                i386         GTK graphical user interface library
ii  libgtk-3-bin                       3.24.33-1ubuntu2                amd64        programs for the GTK graphical user interface library
ii  libgtk-3-common                    3.24.33-1ubuntu2                all          common files for the GTK graphical user interface library
ii  libgtk2.0-0:amd64                  2.24.33-2ubuntu2                amd64        GTK graphical user interface library - old version
ii  libgtk2.0-bin                      2.24.33-2ubuntu2                amd64        programs for the GTK graphical user interface library
ii  libgtk2.0-common                   2.24.33-2ubuntu2                all          common files for the GTK graphical user interface library
ii  libgtk2.0-dev:amd64                2.24.33-2ubuntu2                amd64        development files for the GTK library
ii  libgtkmm-3.0-1v5:amd64             3.24.5-1build1                  amd64        C++ wrappers for GTK+ (shared libraries)
ii  libgtksourceview-3.0-1:amd64       3.24.11-2build1                 amd64        shared libraries for the GTK+ syntax highlighting widget
ii  libgtksourceview-3.0-common        3.24.11-2build1                 all          common files for the GTK+ syntax highlighting widget
ii  libgtksourceview-4-0:amd64         4.8.3-1                         amd64        shared libraries for the GTK+ syntax highlighting widget
ii  libgtksourceview-4-common          4.8.3-1                         all          common files for the GTK+ syntax highlighting widget
ii  libgtkspell3-3-0:amd64             3.0.10-1                        amd64        spell-checking addon for GTK+'s TextView widget
ii  libgvc6-plugins-gtk                2.42.2-6                        amd64        rich set of graph drawing tools - gtk plugins
ii  libjavascriptcoregtk-4.0-18:amd64  2.36.8-0ubuntu0.22.04.1         amd64        JavaScript engine library from WebKitGTK
ii  liblibreofficekitgtk               1:7.3.6-0ubuntu0.22.04.2        amd64        GTK3 widget wrapping LibreOffice functionality
ii  libreoffice-gtk                    1:7.3.6-0ubuntu0.22.04.2        all          transitional package for LibreOffice gtk2 backend
ii  libreoffice-gtk2                   1:7.3.6-0ubuntu0.22.04.2        all          transitional package for LibreOffice gtk2 backend
ii  libreoffice-gtk3                   1:7.3.6-0ubuntu0.22.04.2        amd64        office productivity suite -- GTK+ 3 integration
ii  libwebkit2gtk-4.0-37:amd64         2.36.8-0ubuntu0.22.04.1         amd64        Web content engine library for GTK
ii  libwxgtk-webview3.0-gtk3-0v5:amd64 3.0.5.1+dfsg-4                  amd64        wxWidgets Cross-platform C++ GUI toolkit (GTK 3 webview library runtime)
ii  libwxgtk3.0-gtk3-0v5:amd64         3.0.5.1+dfsg-4                  amd64        wxWidgets Cross-platform C++ GUI toolkit (GTK 3 runtime)
ii  python3-wxgtk4.0                   4.0.7+dfsg-13build1             amd64        Python 3 interface to the wxWidgets Cross-platform C++ GUI toolkit
ii  qt5-gtk-platformtheme:amd64        5.15.3+dfsg-2ubuntu0.2          amd64        Qt 5 GTK+ 3 platform theme
ii  xdg-desktop-portal-gtk             1.14.0-1build1                  amd64        GTK+/GNOME portal backend for xdg-desktop-portal

Mir scheint GTK2 wird hier von lazarus verwendet.

Meine Oberfläche läuft unter LXQt

Ich habe: sudo apt-get install appmenu-gtk2-module
ausgeführt und neu gestartet -> hat aber keine Verbesserung gebracht.
Gentlemen, I found it. I compared `env` between unity and openbox and found it. It is as simple as putting this:

export GTK_MODULES=gail:atk-bridge:appmenu-gtk-module

In ~/.profile. Now everything is fast.
das hätte ich gerne noch ausprobiert aber bei mir gibt es keine Datei ~/.profile

Ich habe
dbus-update-activation-environment --systemd GTK_MODULES
ausprobiert -> auch kein Erfolg

Hier die Ausgaben, wenn ich das Programm über die Befehlszeile starte:

Code: Alles auswählen

peter@Anlage:~/SAMBA/Lazarus/CEH_AblaufEditor_Advanced$ ./CEH_AblaufEditor_Advanced
[HINT] TWinControl.CreateWnd creating Handle during loading frmHysterese:TfrmHysterese csDesigning=False
[HINT] TWinControl.CreateWnd creating Handle during loading panLeft:TPanel csDesigning=False
[HINT] TWinControl.CreateWnd creating Handle during loading panTop:TPanel csDesigning=False
[HINT] TWinControl.CreateWnd creating Handle during loading pltEW:Tsp_XYPlot csDesigning=False
[HINT] TWinControl.CreateWnd creating Handle during loading panBottom:TPanel csDesigning=False
[HINT] TWinControl.CreateWnd creating Handle during loading pltCrit:Tsp_XYPlot csDesigning=False
peter@Anlage:~/SAMBA/Lazarus/CEH_AblaufEditor_Advanced$ dbus-launch ./CEH_AblaufEditor_Advanced
[HINT] TWinControl.CreateWnd creating Handle during loading frmHysterese:TfrmHysterese csDesigning=False
[HINT] TWinControl.CreateWnd creating Handle during loading panLeft:TPanel csDesigning=False
[HINT] TWinControl.CreateWnd creating Handle during loading panTop:TPanel csDesigning=False
[HINT] TWinControl.CreateWnd creating Handle during loading pltEW:Tsp_XYPlot csDesigning=False
[HINT] TWinControl.CreateWnd creating Handle during loading panBottom:TPanel csDesigning=False
[HINT] TWinControl.CreateWnd creating Handle during loading pltCrit:Tsp_XYPlot csDesigning=False
Aber in beiden Fällen betrug die Zeit zwischen FormCreate und FormActivate 32s

Hab ich irgendwas überlesen? Oder gibt es noch andere Vorschläge?
MfG,
petwey

Windows 10 und Linux 32 und 64Bit (L 2.2.2 FPC 3.2.2)

petwey
Beiträge: 83
Registriert: Sa 24. Nov 2012, 19:00
OS, Lazarus, FPC: Windows10 und Linux 32 und 64Bit (L 2.2.2 FPC 3.2.2)
CPU-Target: 32Bit und 64Bit

Re: Lange Zeit zwischen FormCreate und FormActivate

Beitrag von petwey »

Hallo Forum,

mir ist nach ein Passus aus dem Link von af0815 aufgefallen:
On the other hand, most Lazarus projects can now target QT5, which does not have this problem. It looks like GTK3 has issues that will not be fixed (e.g. unable to multi-sample OpenGL) now that development has moved to GTK4. Therefore, it seems like QT5 is the only modern and complete widgetset for Linux.
Wenn ich das richitg deute kann man die Programme auch mit QT5 erzeugen. Ehrlich gesagt habe ich mich nie mit solchen Feinheiten wie GTK und QTxx befasst, sondern "ganz einfach" programmiert.

Ich hab über aptitude mal geschaut ob ich entsprechende Pakete finde, die scheinen da zu sein.

Aber was muss ich alles machen um das Programm auf QT5 umzustellen? Ich hab das noch nie gemacht. Gibt es da eine Anleitung?
  • * GTK deinstallieren ??
    * QT5 insallieren ??
    * Umstellung in den Projekteinstellungen ??
    * weitere Punkte ??
Bitte um Hilfe
MfG,
petwey

Windows 10 und Linux 32 und 64Bit (L 2.2.2 FPC 3.2.2)

wp_xyz
Beiträge: 4889
Registriert: Fr 8. Apr 2011, 09:01

Re: Lange Zeit zwischen FormCreate und FormActivate

Beitrag von wp_xyz »

Winni hat geschrieben:
So 30. Okt 2022, 20:15
Das liegt nicht an der Menge der automatisch erzeugten Formulare.Das sind Sekundenbruchteile, außer es steht in FormCreate ganz wildes Zeugs.
Um das auszuschließen, würde ich als erstes in der Projekt-Datei (.lpr) einen Breakpoint auf der 1.Zeile setzen und dann mit F8 Zeile für Zeile durch den Code steppen, bis runter zu Application.Run. Wenn hier irgendwo der Debugger für 30 s nicht mehr reagiert, hast du das Formular gefunden, das ein Problem beim Erzeugen hat (sofern es ein solches gibt).

wp_xyz
Beiträge: 4889
Registriert: Fr 8. Apr 2011, 09:01

Re: Lange Zeit zwischen FormCreate und FormActivate

Beitrag von wp_xyz »

petwey hat geschrieben:
So 30. Okt 2022, 21:57
Aber was muss ich alles machen um das Programm auf QT5 umzustellen? Ich hab das noch nie gemacht. Gibt es da eine Anleitung?
Gehe zu den Projekt-Optionen > "Hinzufügungen und Beeinflussungen" > "Setze WidgetType" > Wähle "Wert qt5". Das Kompilieren dauert etwas, weil alles für qt5 neu kompiliert wird. Falls ein Fehler in der "end."-Zeile der Projekt-Datei auftritt, ist qt5 nicht komplett. Dann wissen die Spezialisten sicher weiter.

Wenn du irgendwann wieder zu gtk2 zurückwillst, wiederhole das mit "Hinzufügungen und Beeinflussungen" für gtk2. Wähle qt5 ab, so dass nur gtk2 markiert ist. Nun baust du eine gtk2-Anwendung.

Du kannst das ganze auch in Build-Modes integrieren, so dass pro Buildmode ein anderes Widgetset aktiv ist. Damit kannst du einfach zwischen den Widgetsets hinundherschalten. (Oder du gehst jedesmal in "Hinzufügungen und Beeinflussungen" und triffst die entsprechende Auswahl für das gewünschte Widgetset).

petwey
Beiträge: 83
Registriert: Sa 24. Nov 2012, 19:00
OS, Lazarus, FPC: Windows10 und Linux 32 und 64Bit (L 2.2.2 FPC 3.2.2)
CPU-Target: 32Bit und 64Bit

Re: Lange Zeit zwischen FormCreate und FormActivate

Beitrag von petwey »

Hallo wp_xyz,

hab noch nie in einer lpr-Datei Breakpoints gesetzt. Guter Tip!

Beim erzeugen der einzelnen Formular gab es keine Pause erst als ich bei Application.Run auf F8 gedrückt habe kam die 32s Pause.
MfG,
petwey

Windows 10 und Linux 32 und 64Bit (L 2.2.2 FPC 3.2.2)

petwey
Beiträge: 83
Registriert: Sa 24. Nov 2012, 19:00
OS, Lazarus, FPC: Windows10 und Linux 32 und 64Bit (L 2.2.2 FPC 3.2.2)
CPU-Target: 32Bit und 64Bit

Re: Lange Zeit zwischen FormCreate und FormActivate

Beitrag von petwey »

Hallo Forum,

nochmal zurück zum Wechsel von GTK zu QT5

Code: Alles auswählen

ii  fp-units-gtk2-3.2.2:amd64          3.2.2+dfsg-9ubuntu1             amd64        Free Pascal - GTK+ 2.x units
ii  lazarus-ide-gtk2-2.2               2.2.0+dfsg1-5ubuntu1            amd64        IDE for Free Pascal - GTK+ version
ii  lcl-gtk2-2.2                       2.2.0+dfsg1-5ubuntu1            amd64        Lazarus Components Library - GTK+ backend
Das scheinen die GTK-Pakete zu sein die ich mit Lazarus verwende. Ist das richtig??

Dann hab ich mit aptitude nach entsprechenden Paketen als Ersatz geschaut. Das ist mein Ergebnis:

Code: Alles auswählen

fp-units für qt5 hab ich nicht gefunden

lcl-qt5
lcl-qt5-2.2

lazarus-ide-qt5
lazarus-ide-qt5-2.2

lazarus-ide-qt-2.2
Sehe ich das richtig, dass ich die entsprechenden GTK-Pakete entfernen muss und durch QT5-Pakete ersetzen muss?
Aber bei fp-units gibts keine qt5-Alternative und bei der lazarus-ide gibt es neben der qt5-Variante auch eine qt-Variante, was ist die richtige?
MfG,
petwey

Windows 10 und Linux 32 und 64Bit (L 2.2.2 FPC 3.2.2)

petwey
Beiträge: 83
Registriert: Sa 24. Nov 2012, 19:00
OS, Lazarus, FPC: Windows10 und Linux 32 und 64Bit (L 2.2.2 FPC 3.2.2)
CPU-Target: 32Bit und 64Bit

Re: Lange Zeit zwischen FormCreate und FormActivate

Beitrag von petwey »

Hallo Forum,

habe den Wechsel auf QT5 getest anhand der Anleitung unter:
https://wiki.lazarus.freepascal.org/Qt5_Interface

Dabei war der Passus:
Lazarus
Image of Qt5 selected

Lazarus "out of the box" on Linux uses and makes apps for GTK2. It is not marked as having a dependency on Qt5 so if you wish to make Qt5 apps or build a Qt5 version of Lazarus you probably will need to install libQt5Pas-dev, Using your distros repository:

Fedora, Mageia - sudo dnf install qt5pas-devel <enter>
Ubuntu, Debian - sudo apt install libqt5pas-dev <enter>

it will bring along the necessary Qt5 libraries as dependencies, typically about 50Meg on a system that has no existing Qt5 needs. If you wish to use a Qt5 version of Lazarus, build from source with a command like "make bigide LCL_PLATFORM=qt5 <enter>" but note the default GTK2 Lazarus is quite happy to build Qt5 apps for you.

From within Lazarus, to choose to build a Qt5 app, Projects->ProjectOptions->AdditionsandOverrides and click Set "LCLWidgetType", and select Qt5 for the current Build Mode. Better yet, add a special build mode for Qt5, maybe a release and debug.
interessant.
Ich habe mit sudo apt install libqt5pas-dev QT5 installiert, Lazarus neu gestartet und im Projekt auf QT5 umgestellt.

-> Fehlermeldungen

Daraufhin habe ich nur die Umstellung in Projekt wieder rückgängig gemacht - alles andere gelassen - und gestartet.

-> Programm läuft und startet schnell.


An und für sich könnte ich das Thema jetzt als gelöst ansehen, aber eine schlüssige Erklärung wäre ganz schön.
Habt ihr da was für mich?

An sonsten herzlichen Dank. Damit habt ihr mich einen schönen Schritt weiter gebracht.
MfG,
petwey

Windows 10 und Linux 32 und 64Bit (L 2.2.2 FPC 3.2.2)

petwey
Beiträge: 83
Registriert: Sa 24. Nov 2012, 19:00
OS, Lazarus, FPC: Windows10 und Linux 32 und 64Bit (L 2.2.2 FPC 3.2.2)
CPU-Target: 32Bit und 64Bit

Re: Lange Zeit zwischen FormCreate und FormActivate

Beitrag von petwey »

Hallo Forum,

bin jetzt eine Weile nicht zum testen gekommen.
Heute habe ich den Rechner neu hochgefahren, Lazarus gestartet und mein Programm unter Lazarus gestartet.

--> wieder die 32s Wartezeit zw. FormCreate und FormActivate
--> also ist das Problem immer noch nicht gelöst!

- Danach habe ich wie bereits oben beschrieben auf qt5 umgestellt -> wie erwartet Fehlermeldungen
- Wieder zurückgestellt -> läuft, aber mit 32s-Pause
- Die Beiträge hier nochmal studiert -> nach dem Neustart des Rechners damals in meiner Beschreibung, habe ich nur sudo apt install libqt5pas-dev ausgeführt, Lazarus neu gestartet, auf qt5 umgestellt und wieder aufgehoben, danach lief es schnell - das war der Stand letztes mal.
- Also..
* sudo apt install libqt5pas-dev ausgeführt:

Code: Alles auswählen

[sudo] password for peter: 
Paketlisten werden gelesen… Fertig
Abhängigkeitsbaum wird aufgebaut… Fertig
Statusinformationen werden eingelesen… Fertig
libqt5pas-dev ist schon die neueste Version (2.6+2.0.8+dfsg-2).
Die folgenden Pakete wurden automatisch installiert und werden nicht mehr benötigt:
  libflashrom1 libftdi1-2
Verwenden Sie »sudo apt autoremove«, um sie zu entfernen.
0 aktualisiert, 0 neu installiert, 0 zu entfernen und 2 nicht aktualisiert.
* Lazarus neu gestartet
* auf qt5 gestellt und kompiliert -> Fehlermeldungen
* qt5 wieder abgewählt und kompiliert -> Startet schnell, wie gewünscht

Fazit: Ich werde aus dem ganzen noch nicht richtig schlau. Trotz der Ausgabe von sudo apt install libqt5pas-dev, scheint hier irgendwas zu passieren (Vielleicht ein Umgebungsvariable gestetz oder ähnliches). Eventuelle spielt das Beenden und Neuöffnen von Lazarus eine Rolle, das Umstellen auf qt5 - trotz der Fehlermeldungen beim Kompilieren - und weider zurückstellen scheint zu helfen.
Wie kann ich herausfinden was bei sudo apt install libqt5pas-dev im Hintergrund passiert, falls es relavant ist. UND was passiert durch umstellen auf qt5 und wieder zurückstellen in Lazarus. Mir schwant, dass ich hier eventuell über einen Bash-Script eine Übergangslösung schaffen muss, bis das Kernproblem gefixt ist.

Könnt ihr mir dabei helfen?

Ich werde jetzt noch ein paarmal neustarteten und checken welche Aktionen ich weglassen kann und weiter berichten.
MfG,
petwey

Windows 10 und Linux 32 und 64Bit (L 2.2.2 FPC 3.2.2)

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1435
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Lange Zeit zwischen FormCreate und FormActivate

Beitrag von fliegermichl »

Starte dein Programm doch mal mit strace. Da kann man dann schonmal die Systemcalls beobachten. Vielleicht bringt dich das weiter.

petwey
Beiträge: 83
Registriert: Sa 24. Nov 2012, 19:00
OS, Lazarus, FPC: Windows10 und Linux 32 und 64Bit (L 2.2.2 FPC 3.2.2)
CPU-Target: 32Bit und 64Bit

Re: Lange Zeit zwischen FormCreate und FormActivate

Beitrag von petwey »

Hallo fliegermichl,

Danke für den Tip, aber ich glaube daran liegt es nicht. Ich habe jetzt mehrfach den Rechner neu gestartet und meine Aktionen mitprotokolliert. Die letzten 2 Tests scheinen zu zeigen, das es sich wohl um ein Lazarus-Problem handelt.

Hier das Protokoll:

Code: Alles auswählen

Executable in eigenes Verzeichnis verschoben

A)
Heruntergefahren, 20s Rechner stromlos, neu hochgefahren
Programm aus eigenem Verzeichnis gestartet --> Programm (Executeable) startet schnell
Lazarus gestartet --> Programm startet mit 32s-Pause
Programm aus eigenem Verzeichnis gestartet --> Programm (Executeable) startet schnell
Lazarus beendet und neu gestartet --> Programm startet zeitverzögert
Umstellung auf qt5 --> Fehlermeldungen
Zurückgestellt auf gtk2 --> Programm startet zeitverzögert
Lazarus beendet und neu gestartet --> Programm startet zeitverzögert
Umstellung auf qt5 --> Fehlermeldungen
Zurückgestellt auf gtk2 --> Programm startet schnell

B)
Heruntergefahren, 20s Rechner stromlos, neu hochgefahren
Lazarus gestartet, auf qt5 umgestellt, nicht kompiliert, wieder zurückgestellt, Lazarus nach speichern beendet
Lazarus gestartet, kompiliert --> Programm startet verzögert

C)
Heruntergefahren, 20s Rechner stromlos, neu hochgefahren
Umstellung auf qt5 --> Fehlermeldungen
Zurückgestellt auf gtk2, nicht kompiliert
Lazarus beendet, Projekt gespeichert.
Lazarus gestartet, Programm ausgeführt --> Zeitverzögert

D)
Heruntergefahren, 20s Rechner stromlos, neu hochgefahren
Umstellung auf qt5 --> Fehlermeldungen
Zurückgestellt auf gtk2 -->, Programm startet schnell

E)
2. Test mit D)
Heruntergefahren, 20s Rechner stromlos, neu hochgefahren
Umstellung auf qt5 --> Fehlermeldungen
Zurückgestellt auf gtk2 -->, Programm startet schnell

Ich denke die Umstellung auf qt5 bringt mir zwar Fehlermeldungen beim Kompilieren, aber sie bewirkt etwas. Wenn ich danach wieder qt5 abwähle (also indirekt auf gtk2 zurückstelle) werden erst die richtigen Einstellungen für gtk2 gesetzt. Danach erfolgt der Start des Programms nach dem Kompilieren schnell.

Wenn ich das "schnelle" Programm außerhalb von Lazarus starte bleibt es "schnell" und verliert diesen Status nicht!

Woran kann das liegen. Ich habe bestimmt noch 10 weitere Programme von Windows nach Lazarus portiert und bei denen tritt es überhaupt nicht auf. Gibt es hier irgendwelchen gtk2-lastigen Komponenten, die das verursachen könnten und die ich nur in diesem Programm verwende? Ist das irgendwas bekannt, das mit gtk2 crasht?
MfG,
petwey

Windows 10 und Linux 32 und 64Bit (L 2.2.2 FPC 3.2.2)

Benutzeravatar
theo
Beiträge: 10497
Registriert: Mo 11. Sep 2006, 19:01

Re: Lange Zeit zwischen FormCreate und FormActivate

Beitrag von theo »

Hast du die Anwendung schon einmal aus der Shell gestartet und beobachtet, was da geschrieben wird?
Kommt das gar nichts wie z.B. ?
Gtk-CRITICAL **: 12:27:23.275: IA__gtk_window_set_keep_above: assertion 'GTK_IS_WINDOW (window)' failed

Antworten