Merge lp:~wingpanel-devs/wingpanel-indicator-datetime/speedup_loading into lp:~wingpanel-devs/wingpanel-indicator-datetime/trunk

Proposed by Djax
Status: Merged
Approved by: Cody Garver
Approved revision: 139
Merged at revision: 139
Proposed branch: lp:~wingpanel-devs/wingpanel-indicator-datetime/speedup_loading
Merge into: lp:~wingpanel-devs/wingpanel-indicator-datetime/trunk
Diff against target: 113 lines (+22/-14)
4 files modified
src/Indicator.vala (+3/-5)
src/Widgets/calendar/CalendarModel.vala (+18/-6)
src/Widgets/calendar/CalendarView.vala (+0/-2)
src/Widgets/calendar/ControlHeader.vala (+1/-1)
To merge this branch: bzr merge lp:~wingpanel-devs/wingpanel-indicator-datetime/speedup_loading
Reviewer Review Type Date Requested Status
WingPanel Devs Pending
Review via email: mp+299736@code.launchpad.net

Commit message

load calendar model threaded

Description of the change

The connection and loading of EDS take some time and blocks the appearing of wingpanel. This branch is loading the data in a thread.

To post a comment you must log in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'src/Indicator.vala'
--- src/Indicator.vala 2016-02-06 17:07:46 +0000
+++ src/Indicator.vala 2016-07-11 20:07:07 +0000
@@ -72,7 +72,9 @@
72 this.close ();72 this.close ();
73 });73 });
74 calendar.margin_bottom = 6;74 calendar.margin_bottom = 6;
7575 calendar.selection_changed.connect ((date) => {
76 Idle.add (update_events);
77 });
76 main_grid.attach (calendar, 0, position++, 1, 1);78 main_grid.attach (calendar, 0, position++, 1, 1);
7779
78 event_box = new Gtk.Box (Gtk.Orientation.VERTICAL, 0);80 event_box = new Gtk.Box (Gtk.Orientation.VERTICAL, 0);
@@ -87,10 +89,6 @@
87 main_grid.attach (new Wingpanel.Widgets.Separator (), 0, position++, 1, 1);89 main_grid.attach (new Wingpanel.Widgets.Separator (), 0, position++, 1, 1);
8890
89 main_grid.attach (settings_button, 0, position++, 1, 1);91 main_grid.attach (settings_button, 0, position++, 1, 1);
90
91 calendar.selection_changed.connect ((date) => {
92 Idle.add (update_events);
93 });
94 }92 }
9593
96 this.visible = true;94 this.visible = true;
9795
=== modified file 'src/Widgets/calendar/CalendarModel.vala'
--- src/Widgets/calendar/CalendarModel.vala 2016-01-12 23:12:16 +0000
+++ src/Widgets/calendar/CalendarModel.vala 2016-07-11 20:07:07 +0000
@@ -116,7 +116,6 @@
116 HashTable<E.Source, Gee.TreeMap<string, E.CalComponent> > source_events;116 HashTable<E.Source, Gee.TreeMap<string, E.CalComponent> > source_events;
117117
118 private static CalendarModel? calendar_model = null;118 private static CalendarModel? calendar_model = null;
119
120 public enum Weekday {119 public enum Weekday {
121 SUNDAY,120 SUNDAY,
122 MONDAY,121 MONDAY,
@@ -128,16 +127,27 @@
128 }127 }
129128
130 public static CalendarModel get_default () {129 public static CalendarModel get_default () {
131 if (calendar_model == null) {130 lock (calendar_model) {
132 calendar_model = new CalendarModel ();131 if (calendar_model == null) {
133 calendar_model.load_all_sources ();132 calendar_model = new CalendarModel ();
133 calendar_model.load_all_sources ();
134 }
134 }135 }
135136
136 return calendar_model;137 return calendar_model;
137 }138 }
138139
139 private CalendarModel () {140 private CalendarModel () {
140 /* It's dirty, but there is no other way to get it for the moment. */141 // threaded initalization
142 try {
143 new Thread<bool> .try ("loader", threaded_init);
144 } catch (Error e) {
145 stderr.printf ("Error: %s\n", e.message);
146 }
147 }
148
149 private bool threaded_init () {
150 /* It's dirty, but there is no other way to get it for the moment. */
141 string output;151 string output;
142 int week_start = 2;152 int week_start = 2;
143 try {153 try {
@@ -200,6 +210,8 @@
200 } catch (GLib.Error error) {210 } catch (GLib.Error error) {
201 critical (error.message);211 critical (error.message);
202 }212 }
213 parameters_changed ();
214 return true;
203 }215 }
204216
205 /* --- Public Methods ---// */217 /* --- Public Methods ---// */
@@ -454,7 +466,7 @@
454 updated_events.add (event);466 updated_events.add (event);
455 debug_event (source, event);467 debug_event (source, event);
456 }468 }
457 469
458 events_updated (source, updated_events.read_only_view);470 events_updated (source, updated_events.read_only_view);
459 }471 }
460472
461473
=== modified file 'src/Widgets/calendar/CalendarView.vala'
--- src/Widgets/calendar/CalendarView.vala 2016-01-10 20:44:47 +0000
+++ src/Widgets/calendar/CalendarView.vala 2016-07-11 20:07:07 +0000
@@ -46,8 +46,6 @@
46 stack.show_all ();46 stack.show_all ();
47 stack.expand = true;47 stack.expand = true;
4848
49 sync_with_model ();
50
51 var model = CalendarModel.get_default ();49 var model = CalendarModel.get_default ();
52 model.parameters_changed.connect (on_model_parameters_changed);50 model.parameters_changed.connect (on_model_parameters_changed);
5351
5452
=== modified file 'src/Widgets/calendar/ControlHeader.vala'
--- src/Widgets/calendar/ControlHeader.vala 2016-01-07 14:46:41 +0000
+++ src/Widgets/calendar/ControlHeader.vala 2016-07-11 20:07:07 +0000
@@ -27,7 +27,7 @@
27 Object (orientation : Gtk.Orientation.HORIZONTAL);27 Object (orientation : Gtk.Orientation.HORIZONTAL);
28 var left_button = new Gtk.Button.from_icon_name ("pan-start-symbolic");28 var left_button = new Gtk.Button.from_icon_name ("pan-start-symbolic");
29 var right_button = new Gtk.Button.from_icon_name ("pan-end-symbolic");29 var right_button = new Gtk.Button.from_icon_name ("pan-end-symbolic");
30 var center_button = new Gtk.Button.with_label (CalendarModel.get_default ().month_start.format ("%B %Y"));30 var center_button = new Gtk.Button.with_label (new GLib.DateTime.now_local ().format ("%B %Y"));
31 CalendarModel.get_default ().parameters_changed.connect (() => {31 CalendarModel.get_default ().parameters_changed.connect (() => {
32 var date = CalendarModel.get_default ().month_start;32 var date = CalendarModel.get_default ().month_start;
33 center_button.set_label (date.format ("%B %Y"));33 center_button.set_label (date.format ("%B %Y"));

Subscribers

People subscribed via source and target branches