[Sugar-devel] Web Activity lifecycle and storage

Manuel Quiñones manuq at laptop.org
Fri Aug 2 20:26:19 EDT 2013


>From the user point of view: in Sugar there is no need to save.  Data
storage is done automatically.

How is that implemented in GTK?  Activity developers override
write_file.  Then the method is called when the activity is stopped or
when it goes to the background.  On stop, the activity process ends
only after the storage is done.

So we agreed in forwarding notifications from Sugar to the web
activity to get the same behaviour as in GTK, and I've been trying to
implement this:
https://github.com/sugarlabs/sugar-web/pull/63#issuecomment-21576917

As Daniel N proposed, I've been looking at the state changes of the
window management, and I did implement 'pause' and 'resume' with that:

Sugar Shell changes:
https://github.com/manuq/sugar-1/compare/lifecycle

Sugar Web changes:
https://github.com/manuq/sugar-web/compare/lifecycle

But trying to do 'stop' (and 'start', but let's talk about stop) is
more tricky, and I'm blocked.

The problem is: how could the activity process wait for the datastore
write to finish?  If the WnckWindow close is called [1], the activity
process ends.  Unless you connect a callback to 'delete-event' [2] and
handle the destroy() yourself [3] .  Which is what GTK activities do
to store before closing.

[1] https://developer.gnome.org/libwnck/stable/WnckWindow.html#wnck-window-close
[2] https://github.com/sugarlabs/sugar-toolkit-gtk3/blob/master/src/sugar3/activity/activity.py#L296
[3] https://github.com/sugarlabs/sugar-toolkit-gtk3/blob/master/src/sugar3/activity/activity.py#L919

Any hint?  Maybe we should go one layer below, to the toolkit, instead
of trying to handle this from the shell window management?


-- 
.. manuq ..


More information about the Sugar-devel mailing list