X-Git-Url: http://git.maemo.org/git/?p=theonering;a=blobdiff_plain;f=src%2Favatars.py;h=5583d493bbe81a4711a14a2637ae279f7275814c;hp=f4ce3f437f1efa329c110e95abcddcd8f8e4f38a;hb=dc433fea2a937e651729013ac30341b83176f168;hpb=2c32f0f706b57475a70eae47e5750c52d2dfbda8 diff --git a/src/avatars.py b/src/avatars.py index f4ce3f4..5583d49 100644 --- a/src/avatars.py +++ b/src/avatars.py @@ -9,7 +9,7 @@ import tp import util.misc as misc_utils -_moduleLogger = logging.getLogger('avatars') +_moduleLogger = logging.getLogger(__name__) class AvatarsMixin(tp.server.ConnectionInterfaceAvatars): @@ -26,6 +26,7 @@ class AvatarsMixin(tp.server.ConnectionInterfaceAvatars): def __init__(self): tp.server.ConnectionInterfaceAvatars.__init__(self) + self._avatarCache = {} self._implement_property_get( telepathy.interfaces.CONNECTION_INTERFACE_AVATARS, @@ -78,14 +79,14 @@ class AvatarsMixin(tp.server.ConnectionInterfaceAvatars): @misc_utils.log_exception(_moduleLogger) def RequestAvatar(self, contact): imageName = self._select_avatar(contact) - image = self._load_avatar(imageName) + image = self._get_avatar(imageName) return image, "image/png" @misc_utils.log_exception(_moduleLogger) def RequestAvatars(self, contacts): for handleid in contacts: imageName = self._select_avatar(handleid) - image = self._load_avatar(imageName) + image = self._get_avatar(imageName) self.AvatarRetrieved(handleid, imageName, image, "image/png") @misc_utils.log_exception(_moduleLogger) @@ -115,7 +116,16 @@ class AvatarsMixin(tp.server.ConnectionInterfaceAvatars): return imageName + def _get_avatar(self, imageName): + try: + return self._avatarCache[imageName] + except KeyError: + image = self._load_avatar(imageName) + self._avatarCache[imageName] = image + return image + def _load_avatar(self, imageName): + _moduleLogger.debug("Loading avatar %r from file" % (imageName, )) try: with open(os.sep.join([self.__LOOKUP_PATHS[0], imageName+".png"]), "rb") as f: return f.read()