Forum: PC-Programmierung Xlib: Verbindung zum Server trennen


von Matthias R. (mons)


Lesenswert?

Hallo,
mit welcher Funktion kann ich die Verbindung zum X-org-Server 
(hergestellt mit Xlib) wieder trennen? Ich hab das problem, dass ich die 
Fehlermeldung:
1
Maximum number of clients reachedSegmentation fault
bekomme

Danke!

von Sam P. (Gast)


Lesenswert?

Ich vermute, dass dein Problem nicht so einfach ist, wie du denkst. Am 
besten wäre es, wenn du mal etwas Quellcode zeigst, denn normalerweise 
kann der Fehler nicht auftreten. Und beschreib auch mal die 
Systemumgebung und so.

von Matthias R. (mons)


Lesenswert?

Habs grade gelöst ;)
Doch, hat daran gelegen.
Quellcode möchte ich nicht veröffentlichen, wenn dann nur Codestellen

von Sven P. (Gast)


Lesenswert?

Die Xlib ist hinten und vorne nicht eintrittsinvariant... das Thema habe 
ich auch schon durch. Etwas Besserung gab es mit den Thread-Funktionen.

Es klingt so, als ob du innerhalb einer Anwendung mehrere Verbindungen 
zum X-Server auf- und abbauen möchtest, ja? Du wirst dann nämlich 
Probleme bekommen, falls eine Verbindung außerordentlich stirbt. Diesen 
Fall kannst du mit der alten Xlib nämlich praktisch nicht abfangen.

von Matthias R. (mons)


Lesenswert?

Jap, ging darum, Events zu "vermitteln"
hab nur mit Xflush() syncronisiert, aber nicht die Verbindung getrennt
Ich hab die aktuellste Xlib ;) Archlinux ist da ziemlich genau

von Sven P. (Gast)


Lesenswert?

Das hat nichts mit der Version der Xlib zu tun. Die Xlib an sich ist 
halt steinalt.

von Matthias R. (mons)


Lesenswert?

Wird die nicht mit dem X-org aktuallisiert?!

von Sven P. (Gast)


Lesenswert?

Doch schon, aber das Konzept ist halt uralt. Die Bibliothek ist m.M.n. 
nicht dafür gemacht, um die Verbindungen dynamisch zu handhaben. Das 
schrieb ich weiter oben: Es wird schon haarig, wenn eine Verbindung 
abstirbt, weil z.B. der darunterliegende Netzwerkpfad verschwindet.

Da gibts zwar Callbacks für solche Fehler, aber von denen heraus kann 
man nicht mehr aufstehen. Überhaupt ist die Fehlerbehandlung recht 
'dünn'. Du weißt ja nie, welcher Callback zu welchem Aufruf gehört 
(ausgenommen du synchronisierst alles, das kostet wieder Zeit). Und wenn 
du dann einen Callback fängst, kannst du logischerweise auch nicht da 
weitermachen, wo der Fehler aufgetreten ist (synchronisieren...).
Bricht die Verbindung ganz weg, wird es schwierig, den Xlib-Kontext 
wieder loszuwerden.

von Matthias R. (mons)


Lesenswert?

mhm, ist dennoch die einzige Möglichkeit, die für mein Projekt 
funktioniert

von Sven P. (Gast)


Lesenswert?

Um das zu beurteilen, müsste man dein Projekt kennen.

von Rolf Magnus (Gast)


Lesenswert?

Vielleicht bietet XCB hier was?
http://de.wikipedia.org/wiki/XCB

von Matthias R. (mons)


Lesenswert?

Sven P. schrieb:
> Um das zu beurteilen, müsste man dein Projekt kennen.

Bei dem Teil, wo die Xlib benötigt wird geht es um die Steuerung der 
Mausbewegung (30-60mal pro Sekunde) und die Ermittlung der 
Bildschirmauflösung

Rolf Magnus schrieb:
> Vielleicht bietet XCB hier was?
Hab ich auch schon gesehen, kommt evtl. in zuküntigen Versionen ;)

von Εrnst B. (ernst)


Lesenswert?

Matthias R. schrieb:
> Bei dem Teil, wo die Xlib benötigt wird geht es um die Steuerung der
> Mausbewegung (30-60mal pro Sekunde)

Und du hast 30-60 mal pro Sekunde eine neue Verbindung zum X-Server 
aufgebaut? Kein Wunder dass dem X-Server da die Connectionhandles 
ausgehen.

=> Nur einmal verbinden, die Verbindung offenlassen.

von Matthias R. (mons)


Lesenswert?

jap, genau das ^^
Hab in meinem Programm jetzt 3 Threads, die versch. sachen übernehmen 
und unteranderem auch die Verbindung zum x-Server offen bleibt ^^

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.