C++ Qt Debug vs. Release Kit

Gaggi123

Ensign
Registriert
Feb. 2007
Beiträge
248
Hallo zusammen!

Kurze Vorinfo:
Ich verwende Qt 5.5 und den Qt Creator 3.x (genau weiß ich es nicht mehr) unter Linux.
Mein momentanes "Problem" ist folgendes:

Ich möchte in der main.cpp zunächst checken, ob der Keyring vom Betriebssystem unlocked ist. Linux bietet in manchen Distributionen einen automatischen Login an, d.h. der User wird nach wenigen Sekunden automatisch eingeloggt, was für Desktops daheim ganz praktisch ist, aber auf Laptops natürlich bei kaum jemandem zu finden sein dürfte.
Wie auch immer, mein Programm soll auch entsprechend sowas abfangen.
Mir fiel nun auf, dass das Debug Kit in QtCreator eine executable erzeugt, die checkt ob der Keyring gelocked ist und ggf. um Entsperrung bittet. Das Release Kit hingegen übergeht dies einfach und startet meine GUI, obwohl dies im Falle eines unlockten Keyrings nicht passieren soll. Im Release Kit fiel mir zudem auf, dass ich folgenden Fehler erhalte während dem Build:

(program:18056): Gkr-CRITICAL **: gnome_keyring_info_get_is_locked: assertion 'keyring_info' failed

Leider finde ich zu dieser assertion nirgends Informationen. Weiß einer was hier passiert oder übersehe ich etwas total triviales?

Danke im Voraus!


P.S.
Die Gnome Keyring API Dokumentation ist hier zu finden

EDIT:
Siehe letzten Post von mir für einen Workaround
 
Zuletzt bearbeitet: (gelöst)
Update doch mal gtk3 , da kommen ja fast alle 2 Wochen updates raus...
Ergänzung ()

Und wieso benutzt Du gtk funktionen in einem qt5 Programm? Gibt es keine qt funktionen zu dem Problem?
 
Verstehe ich das richtig:
Du möchtest dein Programm nur auf solchen Geräten ohne weiteres starten, wo sowieso ein User seinen Login manuell durchführen muss? Andernfalls soll das Programm was tun?
 
@nebulus:
Leider hat QT keinerlei Anbindung an den Gnome Keyring. Sämtliche Funktionen dessen scheinen über gtk zu laufen.

@kuddlmuddl:
Nein, ich baue einen kleinen SVN Client für die Erstis an der Uni. Da für die SVN Kommandos aber der Gnome Keyring entsperrt sein muss und manch einer eventuell einen automatischen Login aktiviert haben kann, der den Keyring gesperrt lässt, will ich vor Start der GUI prüfen, ob dieser Keyring entsperrt ist oder nicht und ggf. den klassischen Gome Keyring Entsperrdialog aufrufen.
Das funktioniert mit dem Debug Kit des Builds auch sehr gut, nur das Release Kit unterschlägt den Entsperrdialog und wirft in der Entwicklungsumgebung diesen Fehler.
 
Verzeihung für den Doppelpost, aber so werden mehr darauf aufmerksam
UPDATE:
Falls jemand das gleiche Problem haben sollte wie ich, hier ein Workaround, keine Lösung:

Die Assertion, die durch gnome_keyring_info_get_is_locked geworfen wird im Release Build ist zu umgehen, indem lediglich mittels
GnomeKeyringResult result = gnome_keyring_unlock_sync(NULL,NULL);
die Entsperrung gefordert wird. Mir fiel auf, dass der Keyring, sofern er entsperrt ist, bei diesem Aufruf lediglich den aktuellen Zustand zurückgibt, aber keinen neuen Entsperrdialog aufruft. D.h. mit einem Vergleich von "result" mit den vorgegebenen Werten wie GNOME_KEYRING_RESULT_OK oder GNOME_KEYRING_RESULT_CANCELLED kann der weitere Verlauf beeinflusst werden.
 
Zurück
Oben