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
1=== modified file 'src/Indicator.vala'
2--- src/Indicator.vala 2016-02-06 17:07:46 +0000
3+++ src/Indicator.vala 2016-07-11 20:07:07 +0000
4@@ -72,7 +72,9 @@
5 this.close ();
6 });
7 calendar.margin_bottom = 6;
8-
9+ calendar.selection_changed.connect ((date) => {
10+ Idle.add (update_events);
11+ });
12 main_grid.attach (calendar, 0, position++, 1, 1);
13
14 event_box = new Gtk.Box (Gtk.Orientation.VERTICAL, 0);
15@@ -87,10 +89,6 @@
16 main_grid.attach (new Wingpanel.Widgets.Separator (), 0, position++, 1, 1);
17
18 main_grid.attach (settings_button, 0, position++, 1, 1);
19-
20- calendar.selection_changed.connect ((date) => {
21- Idle.add (update_events);
22- });
23 }
24
25 this.visible = true;
26
27=== modified file 'src/Widgets/calendar/CalendarModel.vala'
28--- src/Widgets/calendar/CalendarModel.vala 2016-01-12 23:12:16 +0000
29+++ src/Widgets/calendar/CalendarModel.vala 2016-07-11 20:07:07 +0000
30@@ -116,7 +116,6 @@
31 HashTable<E.Source, Gee.TreeMap<string, E.CalComponent> > source_events;
32
33 private static CalendarModel? calendar_model = null;
34-
35 public enum Weekday {
36 SUNDAY,
37 MONDAY,
38@@ -128,16 +127,27 @@
39 }
40
41 public static CalendarModel get_default () {
42- if (calendar_model == null) {
43- calendar_model = new CalendarModel ();
44- calendar_model.load_all_sources ();
45+ lock (calendar_model) {
46+ if (calendar_model == null) {
47+ calendar_model = new CalendarModel ();
48+ calendar_model.load_all_sources ();
49+ }
50 }
51
52 return calendar_model;
53 }
54
55 private CalendarModel () {
56- /* It's dirty, but there is no other way to get it for the moment. */
57+ // threaded initalization
58+ try {
59+ new Thread<bool> .try ("loader", threaded_init);
60+ } catch (Error e) {
61+ stderr.printf ("Error: %s\n", e.message);
62+ }
63+ }
64+
65+ private bool threaded_init () {
66+ /* It's dirty, but there is no other way to get it for the moment. */
67 string output;
68 int week_start = 2;
69 try {
70@@ -200,6 +210,8 @@
71 } catch (GLib.Error error) {
72 critical (error.message);
73 }
74+ parameters_changed ();
75+ return true;
76 }
77
78 /* --- Public Methods ---// */
79@@ -454,7 +466,7 @@
80 updated_events.add (event);
81 debug_event (source, event);
82 }
83-
84+
85 events_updated (source, updated_events.read_only_view);
86 }
87
88
89=== modified file 'src/Widgets/calendar/CalendarView.vala'
90--- src/Widgets/calendar/CalendarView.vala 2016-01-10 20:44:47 +0000
91+++ src/Widgets/calendar/CalendarView.vala 2016-07-11 20:07:07 +0000
92@@ -46,8 +46,6 @@
93 stack.show_all ();
94 stack.expand = true;
95
96- sync_with_model ();
97-
98 var model = CalendarModel.get_default ();
99 model.parameters_changed.connect (on_model_parameters_changed);
100
101
102=== modified file 'src/Widgets/calendar/ControlHeader.vala'
103--- src/Widgets/calendar/ControlHeader.vala 2016-01-07 14:46:41 +0000
104+++ src/Widgets/calendar/ControlHeader.vala 2016-07-11 20:07:07 +0000
105@@ -27,7 +27,7 @@
106 Object (orientation : Gtk.Orientation.HORIZONTAL);
107 var left_button = new Gtk.Button.from_icon_name ("pan-start-symbolic");
108 var right_button = new Gtk.Button.from_icon_name ("pan-end-symbolic");
109- var center_button = new Gtk.Button.with_label (CalendarModel.get_default ().month_start.format ("%B %Y"));
110+ var center_button = new Gtk.Button.with_label (new GLib.DateTime.now_local ().format ("%B %Y"));
111 CalendarModel.get_default ().parameters_changed.connect (() => {
112 var date = CalendarModel.get_default ().month_start;
113 center_button.set_label (date.format ("%B %Y"));

Subscribers

People subscribed via source and target branches