Kirjoittaja Aihe: Gtk3 spinner kysymys (ratkaistu)  (Luettu 2023 kertaa)

pere

  • Käyttäjä
  • Viestejä: 70
    • Profiili
Gtk3 spinner kysymys (ratkaistu)
« : 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
« Viimeksi muokattu: 02.10.16 - klo:15.07 kirjoittanut pere »

nm

  • Käyttäjä
  • Viestejä: 16232
    • Profiili
Vs: Gtk3 spinner kysymys
« Vastaus #1 : 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
« Viimeksi muokattu: 02.10.16 - klo:13.31 kirjoittanut nm »

pere

  • Käyttäjä
  • Viestejä: 70
    • Profiili
Vs: Gtk3 spinner kysymys
« Vastaus #2 : 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ä.