Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

gtk_main als Thread starten

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Bibliotheken
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 23.03.2010, 13:52    Titel: gtk_main als Thread starten Antworten mit Zitat

Hat jemand damit erfahrungen gemacht, die funktion gtk_main() als thread unter Freebasic unter windows aufzurufen?

Unter linux klappt das:
Code:

threadwait threadcreate(cast(any ptr, @gtk_main))


absolut einwandfrei!

Und windows stürzt das Progamm ab traurig
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 23.03.2010, 14:10    Titel: Antworten mit Zitat

http://www.gtkforums.com/about1844.html
http://library.gnome.org/devel/gtk-faq/stable/x481.html
http://library.gnome.org/devel/gtk/unstable/gtk-General.html#gtk-main
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 23.03.2010, 17:51    Titel: Antworten mit Zitat

@28398: Irgendwie helfen mir die links nicht weiter. Im Endeffekt machen die Herren aus diesem Forum von deinem 1. Link (http://www.gtkforums.com/about1844.html) genau das, womit ich probleme unter windows habe.

Und soweit ichs erkennen kann gehts in deinem 2. Link darum mit g_threads die Events zu parallelisieren.. Also nicht das was ich machen möchte.

Und den 3. Link kannte ich schon und er hat mir auch keine neuen erkenntnisse gegeben..

trotzdem vielen dank! Ich hoffe nur das mir vielleicht noch jemand weiterhelfen kann...

Ansonsten muss ich mein laufendes GTK-Projekt veröffentlichen ohne es unter Windows zum laufen gebracht zu haben traurig(
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
croco97



Anmeldungsdatum: 04.11.2005
Beiträge: 260

BeitragVerfasst am: 23.03.2010, 22:25    Titel: Antworten mit Zitat

Hi OneCypher!

Viel Konstruktives kann ich dir dazu auch nicht sagen. Ich habe mal einen kleinen Ausflug mit Freebasic-Threads nach GTK gemacht (unter Win), um festzustellen, dass das sehr absturzträchtig ist. Meine Vermutung: Das GTK-System ist aus Sicht eines Win32-Programms nicht thread-safe. Was ja auch Sinn macht, denn GTK bringt seine eigene Threadverwaltung mit. Das würde deine Probleme erklären.

Unter Linux: Hast du's unter Gnome oder unter KDE probiert? Wenn es unter Gnome funktioniert, wäre das verständlich: Das läuft ja schon unter GTK und ein Freebasic-Threading endet vermutlich im Aufruf eines g_threads. Zumindest so mal die wilde Hypothese.

Warum muss denn gtk_main in einem eigenen Thread gestartet werden? Ist etwas ungewöhnlich. Kriegst du für irgendwelche Freebasic-Codeteile keine Ressourcen? Oder blockiert dein Freebasic-Code GTK? Letzteres lässt sich leicht beheben:

Auszug aus dem Oma-Tutorial:
"So ähnlich, wie wir in simple Freebasic mit einem sleep 10 dafür sorgen, dass noch andere Tasks zum Zuge kommen, so sorgen wir mit dem Einfügen der Zeile

while (gtk_events_pending):gtk_main_iteration:wend

dafür, dass die Hauptschleife (gtk_main_iteration) dann abgearbeitet wird, wenn GUI-Aktivitäten in der Warteschleife stecken. "

Vielleicht hilft Dir das weiter.

VG!

Croco
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 23.03.2010, 22:37    Titel: Antworten mit Zitat

Du könntest doch auch gkt_main im Primärthread ausführen und den Rest in einen sekundären Thread auslagern.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 24.03.2010, 09:02    Titel: Antworten mit Zitat

@28398: Wäre zwar möglich, aber nicht Sinn der Sache. Um mein Problem nachvollziehen zu können, habe ich das kleine Projekt veröffentlicht:
http://forum.qbasic.at/viewtopic.php?t=7079 ("Mehrere GFX-Fenster per GTK")

@croco97: Das mit
Code:
while (gtk_events_pending):gtk_main_iteration:wend
klingt interessant! Ich denke, das werde ich mir näher ansehen!! Vielleicht kann ich damit mein oben genanntes klein-projekt so verändern das es wieder plattform-unabhängig ist!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Bibliotheken Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz