Ubuntu Suomen keskustelualueet

Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: pere - 02.10.16 - klo:09.53

Otsikko: Gtk3 spinner kysymys (ratkaistu)
Kirjoitti: pere - 02.10.16 - klo:09.53
Osaako joku kertoa miten spinner pitäisi toteutta että oikeasti toimisi?

Olen nyt tehnyt sen näin mutta ei toimi halutulla tavalla.

spinnerin luonti temput on muualla.

functio(jotain)
{
    gtk_spinner_start (GTK_SPINNER (spinner));

    muita toimintoja ......

    gtk_spinner_stop (GTK_SPINNER (spinner));
}

tuosta jos jättää pois spinner stop rivin niin spinner jää pyörimään
mutta alkaa vasta sitten kun funtiosta on jo palattu.
kun tarkoitus olisi että spinner pyörii sen ajan kun tuo functio on ajossa.
niin ja ohjelma on c koodia
Otsikko: Vs: Gtk3 spinner kysymys
Kirjoitti: nm - 02.10.16 - klo:13.24
GTK+:n käyttöliittymän päivitys ja laskenta tapahtuu sinulla nyt samassa säikeessä, jolloin käyttöliittymä pysähtyy laskennan ajaksi. Työtä pitäisi joko ajaa erillisessä säikeessä tai vaihtoehtoisesti laskentasilmukassa pitäisi kutsua ajoittain gtk_main_iteration() -funktiota, jos käsittelemättömiä eventtejä on jonossa: https://developer.gnome.org/gtk3/stable/gtk3-General.html#gtk-events-pending

Säikeistys on aina hieman hankalaa ja vaatii jonkin verran yleistä perehtymistä rinnakkaisen suorituksen ongelmiin ja ratkaisuihin. En nyt heti löytänyt GTK-spesifejä C:llä kirjoitettuja yksinkertaisia esimerkkejä, mutta tässä relevanttia keskustelua aiheesta: http://stackoverflow.com/questions/30607429/gtk3-and-multithreading-replacing-deprecated-functions
Otsikko: Vs: Gtk3 spinner kysymys
Kirjoitti: pere - 02.10.16 - klo:15.06
Kiitos vastauksesta!

tämä tuntuu riittävän minun tapauksessani.
while(gtk_events_pending()) gtk_main_iteration();
ei tarvita vielä säikeistystä.