=== modified file 'src/unity-greeter.vala' --- src/unity-greeter.vala 2014-12-02 23:44:53 +0000 +++ src/unity-greeter.vala 2015-01-07 07:31:12 +0000 @@ -35,7 +35,7 @@ private Cairo.XlibSurface background_surface; - private SettingsDaemon settings_daemon; + private static SettingsDaemon settings_daemon; public bool orca_needs_kick; private MainWindow main_window; @@ -74,12 +74,6 @@ if (!connected && !test_mode) Posix.exit (Posix.EXIT_FAILURE); - if (!test_mode) - { - settings_daemon = new SettingsDaemon (); - settings_daemon.start (); - } - var state_dir = Path.build_filename (Environment.get_user_cache_dir (), "unity-greeter"); DirUtils.create_with_parents (state_dir, 0775); @@ -487,7 +481,6 @@ warning ("Error starting the at-spi registry: %s", e.message); } - Gtk.init (ref args); Ido.init (); log_timer = new Timer (); @@ -495,10 +488,6 @@ debug ("Starting unity-greeter %s UID=%d LANG=%s", Config.VERSION, (int) Posix.getuid (), Environment.get_variable ("LANG")); - /* Set the cursor to not be the crap default */ - debug ("Setting cursor"); - Gdk.get_default_root_window ().set_cursor (new Gdk.Cursor (Gdk.CursorType.LEFT_PTR)); - bool do_show_version = false; bool do_test_mode = false; OptionEntry versionOption = { "version", 'v', 0, OptionArg.NONE, ref do_show_version, @@ -535,7 +524,39 @@ } if (do_test_mode) + { debug ("Running in test mode"); + } + else + { + settings_daemon = new SettingsDaemon (); + settings_daemon.start (); + + var builder = new StringBuilder (); + builder.append ("xwininfo -root -tree"); + builder.append ("| awk '{print $1}'"); + builder.append ("| grep ^0x"); + builder.append ("| while read id; do xprop -id $id; done"); + builder.append ("| grep _XSETTINGS_SETTINGS > /dev/null"); + + while (Posix.system(builder.str) != 0) + { + var loop = new MainLoop (); + var time = new TimeoutSource (1000); + time.set_callback (() => { + loop.quit (); + return false; + }); + time.attach (loop.get_context ()); + loop.run (); + } + } + + Gtk.init (ref args); + + /* Set the cursor to not be the crap default */ + debug ("Setting cursor"); + Gdk.get_default_root_window ().set_cursor (new Gdk.Cursor (Gdk.CursorType.LEFT_PTR)); /* Set GTK+ settings */ debug ("Setting GTK+ settings");