[Sugar-devel] [PATCH sugar-toolkit] Make sure the datastore entry is created in time OLPC #10755

Simon Schampijer simon at schampijer.de
Sun Jul 24 11:31:19 EDT 2011


On 07/24/2011 03:22 PM, Simon Schampijer wrote:
> To avoid that we try to access the datastore entry before
> it has been created we need to move the creation code up,
> before we do get the possible information from a shared
> session. If we have a shared session we do then get the
> title and icon-color information from it and adjust
> accordingly.
>
> Tested that no other operation like for example resuming
> has issues with that change.
>
> Signed-off-by: Simon Schampijer<simon at laptop.org>
> ---
>   src/sugar/activity/activity.py |   24 +++++++++++-------------
>   1 files changed, 11 insertions(+), 13 deletions(-)
>
> diff --git a/src/sugar/activity/activity.py b/src/sugar/activity/activity.py
> index 443799a..53e6062 100644
> --- a/src/sugar/activity/activity.py
> +++ b/src/sugar/activity/activity.py
> @@ -309,7 +309,6 @@ class Activity(Window, gtk.Container):
>
>           if handle.object_id:
>               self._jobject = datastore.get(handle.object_id)
> -            self.set_title(self._jobject.metadata['title'])
>
>               if 'share-scope' in self._jobject.metadata:
>                   share_scope = self._jobject.metadata['share-scope']
> @@ -317,6 +316,10 @@ class Activity(Window, gtk.Container):
>           self.shared_activity = None
>           self._join_id = None
>
> +        if handle.object_id is None and create_jobject:
> +            logging.debug('Creating a jobject.')
> +            self._jobject = self._initialize_journal_object()
> +
>           if handle.invited:
>               wait_loop = gobject.MainLoop()
>               self._client_handler = _ClientHandler(
> @@ -332,21 +335,16 @@ class Activity(Window, gtk.Container):
>                                                     warn_if_none=False)
>               self._set_up_sharing(mesh_instance, share_scope)
>
> -        if handle.object_id is None and create_jobject:
> -            logging.debug('Creating a jobject.')
> -            self._jobject = self._initialize_journal_object()
> -            self.set_title(self._jobject.metadata['title'])
> +        if self.shared_activity is not None:
> +            self._jobject.metadata['title'] = self.shared_activity.props.name
> +            self._jobject.metadata['icon-color'] = \
> +                self.shared_activity.props.color
> +        self.set_title(self._jobject.metadata['title'])
>
>       def _initialize_journal_object(self):
>           title = _('%s Activity') % get_bundle_name()
> -        if self.shared_activity and self.shared_activity.props.name != title:
> -            title = self.shared_activity.props.name
> -
> -        if self.shared_activity is not None:
> -            icon_color = self.shared_activity.props.color
> -        else:
> -            client = gconf.client_get_default()
> -            icon_color = client.get_string('/desktop/sugar/user/color')
> +        client = gconf.client_get_default()
> +        icon_color = client.get_string('/desktop/sugar/user/color')
>
>           jobject = datastore.create()
>           jobject.metadata['title'] = title


Acked from silbe on irc, pushed as:

http://git.sugarlabs.org/sugar-toolkit/mainline/commit/0269f819761cfd803cf4d694298c8ab6a753e242

http://git.sugarlabs.org/sugar-toolkit/mainline/commit/6b675ed45f333b19706331021f474b16add1b084

Regards,
    Simon


More information about the Sugar-devel mailing list