Hallo,
bei der Spurensuche einer SIGSEGV habe ich sehr schöne Aufrufstack-Listen erhalten. Was schätzt ihr, wieviele Funktionen in der RTL/FCL/LCL und externen Bibliotheken (bei GTK2) bis zum OnClick-Event-Handler eines TBitBtn beteiligt sind? Gemeint ist der direkte Weg und nichts was mit Erstellung usw. zu tun hat.
Jetzt ratet mal schön
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Mal überlegen:
Es wird eine Primäre Botschafsschleife geben. Dort wird ein "MouseDown" abgefangen. Jetzt könnte es an den Application-Objekt weiter geleitet werden wobei das wiederum es an der Aktiven Komponente weiter leitet.
Also müsste es drei Orte geben. Ich nehme aber an, es gibt weit aus mehr...
pluto hat geschrieben:Also müsste es drei Orte geben. Ich nehme aber an, es gibt weit aus mehr...
Drei Orte: TApplication, WidgetSet, Controls (Form + Button) ... kommt hin. Du solltest nur beachten, dass TBitBtn = class(TCustomBitBtn) (oder so ähnlich)
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Mit drei Orten kann man aber nur ganz grob einteilen zu welchem Programmteil die Funktionen gehören. Die Anzahl der beteiligten (aufgerufenen) Funktionen sind weitaus höher.
Ursprünglich hatte ich daran gedacht, der gesamte Call-Stack wäre beteiligt, aber die Hauptprogrammschleife kann man mehr oder weniger herausnehmen. Zumindest für GTK2 gilt, dass die LCL-Programmschleife nur ein Hook ist und die eigentliche Schleife durch die Bibliothek des WidgetSets ausgeführt wird (libgtk2). Demnach wäre nicht bei main anzufangen sondern erst bei GtkWSButton.Clicked (d.h. der Callback, der durch das WS aufgerufen wird).
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein