speech: Check if speech schema is present

The schema is provided by the sugar shell package and
in scenarios where that package is not present trying
to reference ends up in segfaults, e.g. flatpak apps.
master
Martin Abente Lahaye 4 years ago committed by James Cameron
parent 7e4264aeab
commit 5de5116ea2

@ -48,6 +48,9 @@ DEFAULT_RATE = 0
_SAVE_TIMEOUT = 500 _SAVE_TIMEOUT = 500
SPEECH_SCHEMA = 'org.sugarlabs.speech'
# This voice names are use dto allow the translation of the voice names. # This voice names are use dto allow the translation of the voice names.
# If espeak add new voices, we need update this list. # If espeak add new voices, we need update this list.
@ -300,7 +303,11 @@ class SpeechManager(GObject.GObject):
def save(self): def save(self):
self._save_timeout_id = -1 self._save_timeout_id = -1
settings = Gio.Settings('org.sugarlabs.speech') schema_source = Gio.SettingsSchemaSource.get_default()
if schema_source.lookup(SPEECH_SCHEMA, True) is None:
return False
settings = Gio.Settings(SPEECH_SCHEMA)
settings.set_int('pitch', self._pitch) settings.set_int('pitch', self._pitch)
settings.set_int('rate', self._rate) settings.set_int('rate', self._rate)
logging.debug('saving speech configuration pitch %s rate %s', logging.debug('saving speech configuration pitch %s rate %s',
@ -308,7 +315,11 @@ class SpeechManager(GObject.GObject):
return False return False
def restore(self): def restore(self):
settings = Gio.Settings('org.sugarlabs.speech') schema_source = Gio.SettingsSchemaSource.get_default()
if schema_source.lookup(SPEECH_SCHEMA, True) is None:
return
settings = Gio.Settings(SPEECH_SCHEMA)
self._pitch = settings.get_int('pitch') self._pitch = settings.get_int('pitch')
self._rate = settings.get_int('rate') self._rate = settings.get_int('rate')
logging.debug('loading speech configuration pitch %s rate %s', logging.debug('loading speech configuration pitch %s rate %s',

Loading…
Cancel
Save