Re: gtk_main_iteration under broadway
I see. Sorry to ruffle your feathers :) Until now, I was under the impression that this was the way things are done - as you note, it's what's recommended to us evil Perl users. I've done some parts threaded already, but I've found implementations on different platforms ( eg Windows ) kinda temperamental. Anyway, thanks for the response and explanation. Dan On Mon, Aug 1, 2016 at 7:16 PM, Emmanuele Bassi wrote: > Hi; > > On 29 July 2016 at 04:48, Daniel Kasak wrote: >> Hi all. >> >> I've got some convenience functions that update a progress bar for long >> running operations. I do: >> >> Gtk3::main_iteration() while ( Gtk3::events_pending() ); > > Stop. I know this kind of behaviour is peddled and cargo culted on > gtk-perl-list because "hey, it works in my abominable 2500 lines > single file Perl program that I have to use for work and nobody will > ever bother to read or change", but it's a really stupid thing to do, > that goes against the design of GTK+. > > Either you move your blocking code inside a thread and update the UI > using Glib::idle_add(), like any sensible person would; or you stop > using synchronous operations blocking the main loop, and then try to > "catch up" at the end so that your UI doesn't continuously lock up. > > Those two functions are a crutch that expose design and implementation > issues in your code, or in the library code you're using. Stop hurting > yourself. > > The only reason why those two functions haven't been deprecated — and > I swear I'll deprecate them before we get into GTK+ 4 — is because > they were used in the test suite, i.e. for controlled, non-interactive > use cases. > >> ... ( in Perl ) after updating the progress bar, so that the window's >> contents are updated while my code continues to run. This works great in X >> and wayland. However in broadway, I quite often see CPU usage in broadwayd >> rise to 100%, and my application hang, immediately after the above line of >> line. > > You're doing a busy loop. > >> Is this known to be not safe under broadway? > > That construct is known to be unsafe *everywhere*. The only reason why > you don't get into a busy loop just as often is that you're getting > another process involved (the X server on X11, the Wayland compositor > on Wayland) and that introduces a potential lag between the "events > pending" and the "main iteration" steps of the loop. > > You're doing something broken. Stop doing it. > > Ciao, > Emmanuele. > > -- > https://www.bassi.io > [@] ebassi [@gmail.com] ___ gtk-list mailing list gtk-list@gnome.org https://mail.gnome.org/mailman/listinfo/gtk-list
Re: gtk_main_iteration under broadway
Hi; On 29 July 2016 at 04:48, Daniel Kasak wrote: > Hi all. > > I've got some convenience functions that update a progress bar for long > running operations. I do: > > Gtk3::main_iteration() while ( Gtk3::events_pending() ); Stop. I know this kind of behaviour is peddled and cargo culted on gtk-perl-list because "hey, it works in my abominable 2500 lines single file Perl program that I have to use for work and nobody will ever bother to read or change", but it's a really stupid thing to do, that goes against the design of GTK+. Either you move your blocking code inside a thread and update the UI using Glib::idle_add(), like any sensible person would; or you stop using synchronous operations blocking the main loop, and then try to "catch up" at the end so that your UI doesn't continuously lock up. Those two functions are a crutch that expose design and implementation issues in your code, or in the library code you're using. Stop hurting yourself. The only reason why those two functions haven't been deprecated — and I swear I'll deprecate them before we get into GTK+ 4 — is because they were used in the test suite, i.e. for controlled, non-interactive use cases. > ... ( in Perl ) after updating the progress bar, so that the window's > contents are updated while my code continues to run. This works great in X > and wayland. However in broadway, I quite often see CPU usage in broadwayd > rise to 100%, and my application hang, immediately after the above line of > line. You're doing a busy loop. > Is this known to be not safe under broadway? That construct is known to be unsafe *everywhere*. The only reason why you don't get into a busy loop just as often is that you're getting another process involved (the X server on X11, the Wayland compositor on Wayland) and that introduces a potential lag between the "events pending" and the "main iteration" steps of the loop. You're doing something broken. Stop doing it. Ciao, Emmanuele. -- https://www.bassi.io [@] ebassi [@gmail.com] ___ gtk-list mailing list gtk-list@gnome.org https://mail.gnome.org/mailman/listinfo/gtk-list
gtk_main_iteration under broadway
Hi all. I've got some convenience functions that update a progress bar for long running operations. I do: Gtk3::main_iteration() while ( Gtk3::events_pending() ); ... ( in Perl ) after updating the progress bar, so that the window's contents are updated while my code continues to run. This works great in X and wayland. However in broadway, I quite often see CPU usage in broadwayd rise to 100%, and my application hang, immediately after the above line of line. Is this known to be not safe under broadway? I can put together a demo if needed, but it's pretty easy for me to trigger ... Dan ___ gtk-list mailing list gtk-list@gnome.org https://mail.gnome.org/mailman/listinfo/gtk-list