GNOME GTK4 Packages
-
Mathias
- Beiträge: 7273
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
GNOME GTK4 Packages
Zum Jahreswechsel stelle ich mein neustes Projekt vor.
Da die GNOME-Bindungen welche bei Lazarus recht betagt sind habe ich mir die Mühe gemacht und dies auf den neusten Stand Sommer 2024 gemacht.
https://github.com/sechshelme/Lazarus-G ... d_Examples
Die Packeges selbst, findet man alle im Ordner .../packages
Ich habe es ohne gir gemacht. Ich habe es mit h2pas und eigenen Hilfstools gemacht.
Ich habe sogar die passenden DLLs dazu, somit läuft das meiste auch unter Win64.
https://github.com/sechshelme/Lazarus-G ... s/tag/Tag1
Die DLLs sind nicht von der stable, da ich das Bauen von diesen nicht hingekriegt habe.
Ich habe die DLLs einfach nach .../windows/system32 kopiert. DIes bei wine und bei Win10 in der VB.
Bis auf gstreamer scheint das meiste zu laufen. Bei gestreamer laufen nur die einfachsten Sachen.
Fehler und Anregungen können direkt in die Issues geschrieben werden. Oder ins Forum.
https://github.com/sechshelme/Lazarus-G ... les/issues
Da die GNOME-Bindungen welche bei Lazarus recht betagt sind habe ich mir die Mühe gemacht und dies auf den neusten Stand Sommer 2024 gemacht.
https://github.com/sechshelme/Lazarus-G ... d_Examples
Die Packeges selbst, findet man alle im Ordner .../packages
Ich habe es ohne gir gemacht. Ich habe es mit h2pas und eigenen Hilfstools gemacht.
Ich habe sogar die passenden DLLs dazu, somit läuft das meiste auch unter Win64.
https://github.com/sechshelme/Lazarus-G ... s/tag/Tag1
Die DLLs sind nicht von der stable, da ich das Bauen von diesen nicht hingekriegt habe.
Ich habe die DLLs einfach nach .../windows/system32 kopiert. DIes bei wine und bei Win10 in der VB.
Bis auf gstreamer scheint das meiste zu laufen. Bei gestreamer laufen nur die einfachsten Sachen.
Fehler und Anregungen können direkt in die Issues geschrieben werden. Oder ins Forum.
https://github.com/sechshelme/Lazarus-G ... les/issues
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
Mathias
- Beiträge: 7273
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: GNOME GTK4 Packages
Ich habe unterdessen einiges mit GTK4 probiert. Der Programmierstil ist einiges anders, als wie man es von der LCL gewöhnt ist. Ich meine damit nicht das *klickibunti" der LCL. Ich will jetzt nicht die LCL runtermachen, die ist eine super Sache., Aber in gewissen Funktionen der GLIB2/GTK4, sieht die LCL alt gebacken aus.
Nur eines darf man bei der LCL nicht vergessen, diese Art von Programmierung ist seit Einführung von Delphi 1 vor 30 Jahren immer noch gleich.
Klar sind Neuerungen dazu gekommen, aber das Grundsystem ist immer noch das Gleiche. Wen man den Lazarus Editor betrachtet, der kitzelt so ziemlich alles aus LCL raus.
Nur eines darf man bei der LCL nicht vergessen, diese Art von Programmierung ist seit Einführung von Delphi 1 vor 30 Jahren immer noch gleich.
Klar sind Neuerungen dazu gekommen, aber das Grundsystem ist immer noch das Gleiche. Wen man den Lazarus Editor betrachtet, der kitzelt so ziemlich alles aus LCL raus.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
Mathias
- Beiträge: 7273
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: GNOME GTK4 Packages
Ich bin gerade an einem Mediaplayer am coden, welche gstramer verwendet. Diesen hatte ich mal mit GTK2 und LCL angefangen. Der hat 7.7MB.
Da ich mich mit GTK4 einarbeiten will, habe ich dieses Project auf GTK4 umgestellt. Und dieser ist unterdessen fast gleich weit wie man alter Player. Und die EXE hat nur noch, 2.1MB. Debugging ist bei beiden Version deaktiviert.
Das sieht man sehr gut vie viel Overhead die LCL verbraucht.
So neben bei ist der alter Player recht instabil, da er nicht schön mit gstreamer zusammen arbeitet.
So wie es aussieht, ist gstreamer mit nativen GTK4 ein super Gespann,
Da ich mich mit GTK4 einarbeiten will, habe ich dieses Project auf GTK4 umgestellt. Und dieser ist unterdessen fast gleich weit wie man alter Player. Und die EXE hat nur noch, 2.1MB. Debugging ist bei beiden Version deaktiviert.
Das sieht man sehr gut vie viel Overhead die LCL verbraucht.
So neben bei ist der alter Player recht instabil, da er nicht schön mit gstreamer zusammen arbeitet.
So wie es aussieht, ist gstreamer mit nativen GTK4 ein super Gespann,
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
Mathias
- Beiträge: 7273
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: GNOME GTK4 Packages
Ich bin etwas tiefer in die Materie von GTK4 eingedrungen. Was da echt spannend ist, ist die Grafikausgabe. Im vergleich zu GTK3, welches alles mit Cairo macht, verwendet GTK4 Snapshot, damit wird alles per GPU gerendert, vorausgesetzt es ist OpenGL vorhanden.
Sämtliche, Widgets werden dann per GPU gezeichnet.
Ich gab einen Versuch gemacht, in dem ich 10000 Kreis ausgegeben habe, optisch sah Cairo und Snapshot gleich aus, aber die Geschwindigkeit macht etwas das 100 fache aus.
So wie ich es sehe, ist GTK4 die Zukunft für Framework,, wen es FFI kompatibel sein soll, was bei QTx leider nicht der Fall ist.
Sämtliche, Widgets werden dann per GPU gezeichnet.
Ich gab einen Versuch gemacht, in dem ich 10000 Kreis ausgegeben habe, optisch sah Cairo und Snapshot gleich aus, aber die Geschwindigkeit macht etwas das 100 fache aus.
So wie ich es sehe, ist GTK4 die Zukunft für Framework,, wen es FFI kompatibel sein soll, was bei QTx leider nicht der Fall ist.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
- af0815
- Lazarusforum e. V.
- Beiträge: 7281
- 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: GNOME GTK4 Packages
Was ist FFI ?
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
Mathias
- Beiträge: 7273
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: GNOME GTK4 Packages
Die genormte Schnittstelle um auf libs zuzugreifen.
Ohne diese Norm könnte FPC nicht zB. auf gtk zugreifen.
https://en.wikipedia.org/wiki/Foreign_f ... _interface
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
- af0815
- Lazarusforum e. V.
- Beiträge: 7281
- 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: GNOME GTK4 Packages
Danke, wieder was gelernt.Mathias hat geschrieben: Do 16. Apr 2026, 17:44Die genormte Schnittstelle um auf libs zuzugreifen.
Ohne diese Norm könnte FPC nicht zB. auf gtk zugreifen.
https://en.wikipedia.org/wiki/Foreign_f ... _interface
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
Mathias
- Beiträge: 7273
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: GNOME GTK4 Packages
Es gib sogar eine libffi.so / libffi-8.dll mit der kann zur Laufzeit jede ffi kompatible lib ansprechen.Die genormte Schnittstelle um auf libs zuzugreifen.
Ohne diese Norm könnte FPC nicht zB. auf gtk zugreifen.
Hier hat es eine fertige Bindung inklusive eines Examples, wen du es mal ausprobieren willst.
https://github.com/sechshelme/Lazarus-G ... /ffi-3.4.6
Was dabei noch echt spannend ist, die dynamische Array von FPC ist nicht voll fii kompatibel aber man kann sie trotzdem ansprechen.
Das sieht man gut das auf tiefster Ebene die dynamische Array, aus der Länge und einem Pointer auf die Daten besteht. Dabei habe ich noch etwas interessantes entdeckt, die wie immer -1 von der effektiven Länge übergeben, da sieht man an diesem Beispiel.
Code: Alles auswählen
procedure print_Vector(v: array of int32);
var
i: integer;
begin
WriteLn('Len Vector: ', Length(v));
for i := 0 to Length(v) - 1 do begin
Write(v[i], ' ');
end;
WriteLn();
end;
procedure main_dynamic_array;
type
argcount = 0..1;
const
a: array of int32 = (11, 22, 33, 44, 55, 66, 77, 88, 99);
var
args_types: array[argcount] of Pffi_type;
arg_val: array[argcount] of Pointer;
cif: Tffi_cif;
res: Tffi_arg;
l: SizeInt;
begin
args_types[0] := @ffi_type_pointer;
args_types[1] := @ffi_type_sint64;
if ffi_prep_cif(@cif, FFI_DEFAULT_ABI, 2, @ffi_type_void, @args_types) = FFI_OK then begin
arg_val[0] := @a;
l := Length(a) - 1;
arg_val[1] := @l;
ffi_call(@cif, @print_Vector, @res, arg_val);
end;
end;
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot