@@ -283,7 +283,44 @@ 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+
287+ g_warning ("Unable to find provider '%s' of required component '%s'" , default_provider , component );
288+
289+ if (!IS_STRING_EMPTY ((char * ) default_provider ))
290+ {
291+ // possible reset component to default
292+
293+ const char * default_default_provider ;
294+ GVariant * g_settings_default_default ;
295+ g_settings_default_default = g_settings_get_default_value (settings_required_components , component );
296+ default_default_provider = g_variant_get_string (g_settings_default_default , NULL );
297+
298+ if (!IS_STRING_EMPTY ((char * ) default_default_provider ) && strcmp (default_default_provider , default_provider ) != 0 )
299+ {
300+ g_warning ("Reset required component '%s' to default" , component );
301+ g_settings_reset (settings_required_components , component );
302+
303+ g_free (default_provider );
304+ default_provider = g_settings_get_string (settings_required_components , component );
305+
306+ if (default_provider != NULL )
307+ {
308+ app_path = gsm_util_find_desktop_file_for_app_name (default_provider , NULL );
309+ if (app_path != NULL )
310+ {
311+ gsm_manager_add_autostart_app (manager , app_path , component );
312+ }
313+ else
314+ {
315+ g_warning ("Unable to find provider '%s' of required component '%s'" , default_provider , component );
316+ }
317+ }
318+
319+ }
320+
321+ g_variant_unref (g_settings_default_default );
322+ }
323+
287324 }
288325
289326 g_free (app_path );
0 commit comments