@@ -283,7 +283,36 @@ static void append_required_apps(GsmManager* manager)
283283 }
284284 else
285285 {
286- g_warning ("Unable to find provider '%s' of required component '%s'" , default_provider , component );
286+ // possible reset component to default
287+ const gchar * gsetting_default_default_provider ;
288+ const GVariant * default_default_provider ;
289+ default_default_provider = g_settings_get_default_value (settings_required_components , component );
290+ g_variant_get (default_default_provider , "&s" , & gsetting_default_default_provider );
291+ g_free (default_default_provider );
292+
293+ if (strcmp (default_provider , "" ) != 0 &&
294+ strcmp (gsetting_default_default_provider , "" ) != 0 &&
295+ strcmp (gsetting_default_default_provider , default_provider ) != 0 )
296+ {
297+ g_warning ("Unable to find provider '%s' of required component '%s'" , default_provider , component );
298+ g_warning ("Reset required component '%s' to default" , component );
299+ g_settings_reset (settings_required_components , component );
300+
301+ g_free (default_provider );
302+ default_provider = g_settings_get_string (settings_required_components , component );
303+ if (default_provider != NULL )
304+ {
305+ app_path = gsm_util_find_desktop_file_for_app_name (default_provider , NULL );
306+ if (app_path != NULL )
307+ {
308+ gsm_manager_add_autostart_app (manager , app_path , component );
309+ }
310+ }
311+ }
312+ if (app_path == NULL )
313+ {
314+ g_warning ("Unable to find provider '%s' of required component '%s'" , default_provider , component );
315+ }
287316 }
288317
289318 g_free (app_path );
0 commit comments