[Sugar-devel] Is there a way to purposefully do synchronous GUI updates?
Ajay Garg
ajay at activitycentral.com
Tue Aug 21 03:47:39 EDT 2012
On Tue, Aug 21, 2012 at 1:00 PM, Benjamin Berg <benzea at sugarlabs.org> wrote:
> On Tue, 2012-08-21 at 12:43 +0530, Ajay Garg wrote:
> > Does calling "process_updates" causes the GUI updates to take place,
> > before the user returns from the function?
>
> Yes, the updates are done immediately and the drawing commands are
> pushed out to the X server. And I do expect that this is *exactly* what
> you requested.
> You don't know exactly when the GUI update will be visible on the
> screen. But that is normal and has nothing to do with process_updates.
>
> An example where this mechanism was used in GTK+ is scrollbars. When you
> are dragging them, they should be redrawn right away so that they move
> correctly.
>
> Benjamin
>
Awesome !!!!
I'll give this a try right away, and get back to you with the results !!
Thanks a ton !!!
Thanks and Regards,
Ajay
>
> > That is, will the following scenario necessarily happen ::
> >
> > logic statement 1
> > update GUI
> > process_updates ===> causes the GUI update
> > logic statement 2 ===> necessarily after GUI
> > update
> >
> >
> >
> > I doubt that the above is a guarantee, as you have already mentioned
> > that the actual GUI processing will take place whenever X server sees
> > it fit.
> > Anyhow, just wish to confirm :)
> >
> >
> > Thanks and Regards,
> > Ajay
> >
> > Please
> > note that you don't have much control here, you don't know how
> > fast the
> > update will happen, or even if it is ever visible to the user.
> > The X
> > server will process the drawing commands when it sees fit.
> >
> > > My intention is to somehow have GUI updates in a synchronous
> > manner,
> > > and not rely upon "gobject.idle_add", which would have to
> > have
> > > dividing a long workflow into many sub-parts, and chaining
> > these
> > > sub-parts through "gobject.idle_add".
> > > This is EXTREMELY painful, especially when one needs to do
> > it on an
> > > already existing codebase.
> >
> >
> > As an alternative you could do something like:
> >
> > def idle_add_function(pos):
> > if pos[0] == 1:
> > # logic 1
> > elif pos[0] == 2:
> > # logic 2
> > else:
> > return False
> >
> > queue_update()
> >
> > pos[0] += 1
> > return True
> >
> > Where pos = [0] to begin with (the usage of the list is just
> > so that it
> > is global in a way, any object will do, it just needs to be
> > something
> > permuteable).
> >
> > Benjamin
> >
> >
> > _______________________________________________
> > Sugar-devel mailing list
> > Sugar-devel at lists.sugarlabs.org
> > http://lists.sugarlabs.org/listinfo/sugar-devel
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sugarlabs.org/archive/sugar-devel/attachments/20120821/c81f384c/attachment.html>
More information about the Sugar-devel
mailing list