Merge lp:~kaihengfeng/unity-greeter/fix-resolution-changing into lp:unity-greeter

Proposed by Kai-Heng Feng
Status: Merged
Merged at revision: 1939
Proposed branch: lp:~kaihengfeng/unity-greeter/fix-resolution-changing
Merge into: lp:unity-greeter
Diff against target: 173 lines (+88/-44)
1 file modified
src/unity-greeter.vala (+88/-44)
To merge this branch: bzr merge lp:~kaihengfeng/unity-greeter/fix-resolution-changing
Reviewer Review Type Date Requested Status
Robert Ancell Approve
Review via email: mp+295923@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Robert Ancell (robert-ancell) wrote :

My system didn't explode after adding this so I merged it.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'src/unity-greeter.vala'
--- src/unity-greeter.vala 2016-03-16 06:42:17 +0000
+++ src/unity-greeter.vala 2016-05-27 09:27:16 +0000
@@ -47,16 +47,15 @@
47 private static Timer log_timer;47 private static Timer log_timer;
4848
49 private DialogDBusInterface dbus_object;49 private DialogDBusInterface dbus_object;
50 private SettingsDaemonDBusInterface settings_daemon_proxy;
51 public signal void xsettings_ready ();
52 public signal void greeter_ready ();
5053
51 private UnityGreeter (bool test_mode_)54 private UnityGreeter (bool test_mode_)
52 {55 {
53 singleton = this;56 singleton = this;
54 test_mode = test_mode_;57 test_mode = test_mode_;
5558
56 /* Prepare to set the background */
57 debug ("Creating background surface");
58 background_surface = create_root_surface (Gdk.Screen.get_default ());
59
60 greeter = new LightDM.Greeter ();59 greeter = new LightDM.Greeter ();
61 greeter.show_message.connect ((text, type) => { show_message (text, type); });60 greeter.show_message.connect ((text, type) => { show_message (text, type); });
62 greeter.show_prompt.connect ((text, type) => { show_prompt (text, type); });61 greeter.show_prompt.connect ((text, type) => { show_prompt (text, type); });
@@ -98,44 +97,32 @@
98 warning ("Failed to load state from %s: %s\n", state_file, e.message);97 warning ("Failed to load state from %s: %s\n", state_file, e.message);
99 }98 }
10099
101 main_window = new MainWindow ();100 /* Render things after xsettings is ready */
102101 xsettings_ready.connect ( xsettings_ready_cb );
103 Bus.own_name (BusType.SESSION, "com.canonical.UnityGreeter", BusNameOwnerFlags.NONE);102
104103 GLib.Bus.watch_name (BusType.SESSION, "org.gnome.SettingsDaemon", BusNameWatcherFlags.NONE,
105 dbus_object = new DialogDBusInterface ();104 (c, name, owner) =>
106 dbus_object.open_dialog.connect ((type) =>105 {
107 {106 try {
108 ShutdownDialogType dialog_type;107 settings_daemon_proxy = GLib.Bus.get_proxy_sync (
109 switch (type)108 BusType.SESSION, "org.gnome.SettingsDaemon", "/org/gnome/SettingsDaemon");
110 {109 settings_daemon_proxy.plugin_activated.connect (
111 default:110 (name) =>
112 case 1:111 {
113 dialog_type = ShutdownDialogType.LOGOUT;112 if (name == "xsettings") {
114 break;113 debug ("xsettings is ready");
115 case 2:114 xsettings_ready ();
116 dialog_type = ShutdownDialogType.RESTART;115 }
117 break;116 }
118 }117 );
119 main_window.show_shutdown_dialog (dialog_type);118 }
120 });119 catch (Error e)
121 dbus_object.close_dialog.connect ((type) => { main_window.close_shutdown_dialog (); });120 {
122 Bus.own_name (BusType.SESSION, "com.canonical.Unity", BusNameOwnerFlags.NONE,121 debug ("Failed to get USD proxy, proceed anyway");
123 (c) =>122 xsettings_ready ();
124 {123 }
125 try124 },
126 {125 null);
127 c.register_object ("/org/gnome/SessionManager/EndSessionDialog", dbus_object);
128 }
129 catch (Error e)
130 {
131 warning ("Failed to register /org/gnome/SessionManager/EndSessionDialog: %s", e.message);
132 }
133 },
134 null,
135 () => debug ("Failed to acquire name com.canonical.Unity"));
136
137 start_fake_wm ();
138 Gdk.threads_add_idle (ready_cb);
139 }126 }
140127
141 public string? get_state (string key)128 public string? get_state (string key)
@@ -456,6 +443,53 @@
456 stderr.printf ("[%+.2fs] %s %s\n", log_timer.elapsed (), prefix, message);443 stderr.printf ("[%+.2fs] %s %s\n", log_timer.elapsed (), prefix, message);
457 }444 }
458445
446 private void xsettings_ready_cb ()
447 {
448 /* Prepare to set the background */
449 debug ("Creating background surface");
450 background_surface = create_root_surface (Gdk.Screen.get_default ());
451
452 main_window = new MainWindow ();
453
454 Bus.own_name (BusType.SESSION, "com.canonical.UnityGreeter", BusNameOwnerFlags.NONE);
455
456 dbus_object = new DialogDBusInterface ();
457 dbus_object.open_dialog.connect ((type) =>
458 {
459 ShutdownDialogType dialog_type;
460 switch (type)
461 {
462 default:
463 case 1:
464 dialog_type = ShutdownDialogType.LOGOUT;
465 break;
466 case 2:
467 dialog_type = ShutdownDialogType.RESTART;
468 break;
469 }
470 main_window.show_shutdown_dialog (dialog_type);
471 });
472 dbus_object.close_dialog.connect ((type) => { main_window.close_shutdown_dialog (); });
473 Bus.own_name (BusType.SESSION, "com.canonical.Unity", BusNameOwnerFlags.NONE,
474 (c) =>
475 {
476 try
477 {
478 c.register_object ("/org/gnome/SessionManager/EndSessionDialog", dbus_object);
479 }
480 catch (Error e)
481 {
482 warning ("Failed to register /org/gnome/SessionManager/EndSessionDialog: %s", e.message);
483 }
484 },
485 null,
486 () => debug ("Failed to acquire name com.canonical.Unity"));
487
488 start_fake_wm ();
489 Gdk.threads_add_idle (ready_cb);
490 greeter_ready ();
491 }
492
459 public static int main (string[] args)493 public static int main (string[] args)
460 {494 {
461 /* Protect memory from being paged to disk, as we deal with passwords */495 /* Protect memory from being paged to disk, as we deal with passwords */
@@ -570,8 +604,11 @@
570 debug ("Creating Unity Greeter");604 debug ("Creating Unity Greeter");
571 var greeter = new UnityGreeter (do_test_mode);605 var greeter = new UnityGreeter (do_test_mode);
572606
573 debug ("Showing greeter");607 greeter.greeter_ready.connect (() => {
574 greeter.show ();608 debug ("Showing greeter");
609 greeter.show ();
610 });
611
575612
576 if (!do_test_mode)613 if (!do_test_mode)
577 {614 {
@@ -664,3 +701,10 @@
664 close_dialog ();701 close_dialog ();
665 }702 }
666}703}
704
705[DBus (name="org.gnome.SettingsDaemon")]
706private interface SettingsDaemonDBusInterface : Object
707{
708 public signal void plugin_activated (string name);
709 public signal void plugin_deactivated (string name);
710}

Subscribers

People subscribed via source and target branches