Probleme mit Lazarus OpenGl sowie mit Fonts...

Antworten
gtom
Beiträge: 11
Registriert: Do 7. Jan 2010, 17:31

Probleme mit Lazarus OpenGl sowie mit Fonts...

Beitrag von gtom »

Hallo, nachdem mein Projekt mittlerweile "erwachsen" geworden ist bin ich gerade an den "Feinheiten" angekommen, hier bestehen noch 2 Probleme worauf ich bisher noch keine Antwort gefunden habe...

1.) Probleme mit Font (Fixed -Pitch)
Wenn ich in meinem Projekt in einem Formular einen Font auswähle (z.b. Courier 10 Pitch) dann wird der Font unter Gtk2 korrekt dargestellt, nicht aber unter Gtk1. Alle Umlaute werde nicht (bzw mit falschen Zeichen) dargestellt. Wenn ich nun die Fonteigenschaft wieder auf default_font setze dann ändert das nichts an den falschen Zeichen. Erst wenn ich im .lfm File manuell alle (!) Einträge mit Font.Height entferne dann werden die Zeichen wieder richtig dargestellt.
Frage: Wie kann ich unter Gtk1 einen Font auswählen mit einer festen Schriftbreite (FIXED PITCH) ???

2.) OpenGl: Habe die Frage schon im US Forum gestellt aber keine Antwort...
In meinem Program wird ein OpenGlControl verwendet. Dieses Funktioniert unter Gkt1 einwandfrei. Unter Gtk2 allerdings verursacht das OpenGlControl auf vielen Rechnern (gleiche Ubuntu- Version) XErrors (Badmatch), bei einigen Rechnern gleich am Anfang, bei einigen erst beim Beenden des Programms... Lediglich auf einem Rechner läuft das OpenGlControl ohne Fehler. Wenn ich mit Gtk1 kompiliere sind alle Rechner in der Lage ohne den XError- Badmatch zu arbeiten.
Wie kann ich solche Fehler eingrenzen bzw. die stelle im Quelltext finden die den Fehler veruracht??? Meinen Code kann ich ausschliessen da das Programm unter Gkt1 ja einwandfrei läuft und beim entfernen des OpenGl Controls auch auf Gtk2 ohne Fehler läuft.

Der Debugger hilft bei XErrors ja nicht weiter, oder???

mfg Thomas

gtom
Beiträge: 11
Registriert: Do 7. Jan 2010, 17:31

Re: Probleme mit Lazarus OpenGl sowie mit Fonts...

Beitrag von gtom »

Nachtrag:
Der OpenGlControl- Fehler (XError, Badmatch) passiert auch in einem neuen (leeren) Projekt nur mit einem OpenGlControl auf dem Formular.
Von daher muss das ja auch bei anderen vorkommen. Oder wird OpenGlControl sooo selten verwendet???

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

Re: Probleme mit Lazarus OpenGl sowie mit Fonts...

Beitrag von theo »

gtom hat geschrieben: 1.) Probleme mit Font (Fixed -Pitch)
Wenn ich in meinem Projekt in einem Formular einen Font auswähle (z.b. Courier 10 Pitch) dann wird der Font unter Gtk2 korrekt dargestellt, nicht aber unter Gtk1. Alle Umlaute werde nicht (bzw mit falschen Zeichen) dargestellt. Wenn ich nun die Fonteigenschaft wieder auf default_font setze dann ändert das nichts an den falschen Zeichen. Erst wenn ich im .lfm File manuell alle (!) Einträge mit Font.Height entferne dann werden die Zeichen wieder richtig dargestellt.
Frage: Wie kann ich unter Gtk1 einen Font auswählen mit einer festen Schriftbreite (FIXED PITCH) ???
Gtk1 ist abgeschrieben, d.h. auf dessen funktionieren wird afaik nicht mehr Rücksicht genommen.

gtom
Beiträge: 11
Registriert: Do 7. Jan 2010, 17:31

Re: Probleme mit Lazarus OpenGl sowie mit Fonts...

Beitrag von gtom »

mit Gtk2 kann ich auch leben wenn Problem 2 behoben ist... :-)

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

Re: Probleme mit Lazarus OpenGl sowie mit Fonts...

Beitrag von theo »

gtom hat geschrieben:mit Gtk2 kann ich auch leben wenn Problem 2 behoben ist... :-)
Ich kann das Problem hier (OpenSuSE 11.1, GTK2: 2.14.4) nicht reproduzieren.

Unterscheiden sich die Systeme in den GTK2 Versionen? Sonstige Dinge wie Compiz etc?

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1629
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Probleme mit Lazarus OpenGl sowie mit Fonts...

Beitrag von corpsman »

Also ich nutze OpenGL und GTK2 Ohne Ende und hatte noch nie Probleme, sowohl unter Win, nicht, als auch unter Kubuntu 9.10 ( Gforce 8400m )
--
Just try it

gtom
Beiträge: 11
Registriert: Do 7. Jan 2010, 17:31

Re: Probleme mit Lazarus OpenGl sowie mit Fonts...

Beitrag von gtom »

Das Projekt läuft unter Ubuntu 8.10 mit RTAI (also mit nem RealTime Kernel)
Auf 9.10 Std sowie auf meinem Atom(8.10 RTAI) läuft es ohne Probleme,

Der Fehler tritt immer auf wenn das zugehörige Formular gelöscht wird... OnDestroy...

Wi kann man XErrors "debuggen" ???

Gru0 Thomas

creed steiger
Beiträge: 958
Registriert: Mo 11. Sep 2006, 22:56

Re: Probleme mit Lazarus OpenGl sowie mit Fonts...

Beitrag von creed steiger »

Alle Umlaute werde nicht (bzw mit falschen Zeichen) dargestellt.
Das wird damit zusammenhängen das GTK1 kein Unicode kann.

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1629
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Probleme mit Lazarus OpenGl sowie mit Fonts...

Beitrag von corpsman »

Na wenn der Fehler beim Löschen auftritt, sieht sich mir das schwer nach einem Zugriff auf OpenGL oder andere Komponenten nach einem Free aus.

Ich geh da immer her und habe eine Bool Variable die den Kompletten Zugriff steuert. Die machst du bei OnClose auf False.

Außerdem kannst du das Beenden ganz normal depuggen wie alles andere auch. Mach nen Haltepunkt da hin wo das beenden ausgelöst wird und dann schritt für schritt.
--
Just try it

gtom
Beiträge: 11
Registriert: Do 7. Jan 2010, 17:31

Re: Probleme mit Lazarus OpenGl sowie mit Fonts...

Beitrag von gtom »

Erstmal Danke für die Antworten...

Habe mal zum Test auf 2 Rechner das gleiche Ubuntu aufgespielt, Lazarus aus den Paketquellen installiert und die Rechner identisch aufgebaut (Wie gesagt, ist nur die Hardware unterschiedlich)
Auf beiden Rechnern das gleiche Projekt ausgeführt, Rechner 1 steigt mit nem XError aus, Rechner 2 läuft ohne Probleme...

Der Fehler tritt immer hier auf:

The program 'test' received an X Window System error.
This probably reflects a bug in the program.
The error was 'BadDrawable (invalid Pixmap or Window parameter)'.
(Details: serial 2119 error_code 9 request_code 145 minor_code 9)

Fehlerzeile: gtkproc.inc ab Zeile 4173

procedure DestroyWidget(Widget: PGtkWidget);
var
Info: PWidgetInfo;
AWinControl: TWinControl;
Mess: TLMessage;
begin
//DebugLn(['DestroyWidget A ',GetWidgetDebugReport(Widget)]);
{$IFDEF DebugLCLComponents}
if DebugGtkWidgets.FindInfo(Widget)=nil then
DebugLn(['DestroyWidget ',GetWidgetDebugReport(Widget)]);
{$ENDIF}
Info:=GetWidgetInfo(Widget);
if Info<>nil then begin
if (Info^.LCLObject is TWinControl) then begin
AWinControl:=TWinControl(Info^.LCLObject);
if AWinControl.HandleAllocated
and (PGtkWidget(AWinControl.Handle)=Widget) then begin
// send the LM_DESTROY message before destroying the widget
FillChar(Mess,SizeOf(Mess),0);
Mess.msg := LM_DESTROY;
DeliverMessage(Info^.LCLObject, Mess);
end;
end;
FreeWidgetInfo(Widget);
end;
{$IFDEF DebugLCLComponents}
DebugGtkWidgets.MarkDestroyed(Widget);
{$ENDIF}
gtk_widget_destroy(Widget); <<<<<<<<<<<<<<<<<<< Da kommt der XError
//DebugLn(['DestroyWidget B']);
end;

Grundsätzlich funktioniert mein Projekt, sind mittlerweile ca. 800kb Quelltext und etwa 20 Benutzer die in der Testphase mitmachen, bei etwa 12 Usern tritt dieser Fehler beim beenden des Programms auf,,,

Gruß Thomas

creed steiger
Beiträge: 958
Registriert: Mo 11. Sep 2006, 22:56

Re: Probleme mit Lazarus OpenGl sowie mit Fonts...

Beitrag von creed steiger »

Könnte das ganze vielleicht damit zusammenhängen das unteschiedliche Themes genutzt werden,und der Fehler nur bei einem bestimmten Theme auftritt?
(hm,ok du hast zwei identische Rechner aufgesetzt also vergiss es)

gtom
Beiträge: 11
Registriert: Do 7. Jan 2010, 17:31

Re: Probleme mit Lazarus OpenGl sowie mit Fonts...

Beitrag von gtom »

Das Verhalten ist unabhängig vom eingestellten Thema und passiert auch nur bei OpenGlControl...

D.h. gtkWidgetset -> DestroyHandle läuft für alle Buttons, Menus, Listboxes etc einwandfrei durch bis das OpenGl- Controll kommt,
Zum Test habe ich mal alle Gl-Ausgaben mit ner Bool- Variable unterbunden, dennoch tritt der Fehler genau an der Stelle auf...
Bin langsam mit meinem Latein am Ende... :-(

gtom
Beiträge: 11
Registriert: Do 7. Jan 2010, 17:31

Re: Probleme mit Lazarus OpenGl sowie mit Fonts...

Beitrag von gtom »

Äh, nochwas, hab ich ganz vergessen...

Ich rede hier von allen (!) Lazarus Apps die TOpenGlControl benutzen, auch das original.- Beispiel...!
die Anwendungen laufen alle aber beim Beenden kommt der Fehler (XError, BadMatch), normalerweise bekommt der Benutzer davon nichts mit es sei denn man startet aus einem Terminal oder man hat das Debugger- Fenster auf... D.h. wenn das ein "normales" Programm ist dann ist der Fehler eigentlich egal da er immer nur beim Beenden auftritt und ansonsten keine negativen Auswirkungen hat, mein Programm allerdings läuft in einer Echtzeit umgebung und muss ordentlich beendet werden damit die nachfolgenden Prozesse mit beendet werden... Da von den vielen Leuten die da mitmachen etwa 12 den gleichen Fehler haben kann ich mir nicht vorstellen dass der Fehler soooo unbekannt sein soll... !?


Noch bezüglich Gtk1 und Umlauten...

Warum werden alle Umlaute korrekt dargestellt solange ich bei MainForm.Font NICHTS ändere... !? Sobald ich MainForm,.Font.Height irgendeinen Wert zuweise werden die Umlaute nicht mehr richtig dargestellt...

Gruß Thomas

gtom
Beiträge: 11
Registriert: Do 7. Jan 2010, 17:31

Re: Probleme mit Lazarus OpenGl sowie mit Fonts...

Beitrag von gtom »

So, Problem ist gleöst...

Je nach Rechnerkonfiguration steigt TOpenGlControl mit nem xError (Badmatch, BadDrawable) aus...

Lösung:

1.) die glx funktionen die in gtkglxcontext enthalten sind werden durch die funktionen der FP- Unit glx ersetzt.
2.) context_unref wird auskommentiert...

Jetzt läuft bei mir OpenGlContext auf allen Rechnern...

Gruß Thomas

Antworten