ubuntuusers.de

gtk_combo_box_text_remove_all vernichtet App

Status: Gelöst | Ubuntu-Version: Xubuntu 18.04 (Bionic Beaver)
Antworten |

rootmolloch

Anmeldungsdatum:
12. Juli 2018

Beiträge: Zähle...

Hallo, ich kann eine ComboBoxText nur zu Beginn der Programmes löschen, also wenn die App initialisiert wird.

Später möchte ich den Inhalt der ComboBox erneuern. Also : alle Einträge löschen und dann neue Einträge appenden.

Aber das löschen der ComboBox hängt mir das Programm auf.

Ideen ????

Herzliche Grüße Thorsten

rootmolloch

(Themenstarter)

Anmeldungsdatum:
12. Juli 2018

Beiträge: 8

Mit pthread_create() : gtk_combo_box_text_remove_all() in eigenen Thread auslagern

Axel-Erfurt

Anmeldungsdatum:
18. Mai 2016

Beiträge: 1347

Benutzt Du ein model ?

Dann vielleicht

1
gtk_list_store_clear(GTK_LIST_STORE(gtk_combo_box_get_model(GTK_COMBO_BOX(combo_box))));

rootmolloch

(Themenstarter)

Anmeldungsdatum:
12. Juli 2018

Beiträge: 8

hab schon mit Multithreading gelöst

Neral

Anmeldungsdatum:
3. Oktober 2007

Beiträge: 230

@rootmolloch: Sicher, dass das so geht? Die allermeisten GTK-Funktionen sind nicht threadsicher und dürfen nur aus dem Thread aufgerufen werden, in dem die Mainloop läuft. Alles andere ist undefiniert.

rootmolloch

(Themenstarter)

Anmeldungsdatum:
12. Juli 2018

Beiträge: 8

Yo also ich glaube dir gerne, was du da schreibst, aber : meine Lösung ist die einzige, die bei mir funktioniert. Weiß der Teufel wieso.

Hier das lebende Beispiel : https://github.com/gammastorm/TKBrain/blob/master/src/TKBrain.cu

rootmolloch

(Themenstarter)

Anmeldungsdatum:
12. Juli 2018

Beiträge: 8

Ich glaub mein PC hat Launen, jetzt funktioniert's wieder nicht !?!

rootmolloch

(Themenstarter)

Anmeldungsdatum:
12. Juli 2018

Beiträge: 8

Okay, das Problem liegt wohl woanders. Es ist eine CUDA Anwendung mit g++-6. Wahrscheinlich Compiler Bugs

Neral

Anmeldungsdatum:
3. Oktober 2007

Beiträge: 230

Ich denke nicht, dass das komische Verhalten von einem Compilerbug ausgelöst wird. Wie gesagt: GTK ist inhärent nicht threadsicher. Und so wie ich das beim Überfliegen gesehen habe, greifst du aus allen möglichen Threads auf die GUI zu. Die Mutexes werden dir auch nicht helfen, weil die die Mainloop nicht anhalten.

Eventuell helfen diese beiden Artikel weiter.

Das Mischen von C und C++ ist auch nicht wirklich schön. GTK hat C++-Bindings.

Antworten |