[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