From 42bd1c1066978afa3040266f243a0582a73f453a Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Thu, 9 Jul 2015 15:33:18 -0500 Subject: avoid the round trip to EDS if we can figure out the tzid from libical first --- src/engine-eds.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/engine-eds.cpp b/src/engine-eds.cpp index 9a54b74..746b9af 100644 --- a/src/engine-eds.cpp +++ b/src/engine-eds.cpp @@ -740,12 +740,18 @@ private: if (in.tzid != nullptr) { const char * tzid {}; - icaltimezone * itz {}; // owned by client + icaltimezone * itz {}; - if (e_cal_client_get_timezone_sync(client, in.tzid, &itz, cancellable.get(), nullptr)) - { + itz = icaltimezone_get_builtin_timezone_from_tzid(in.tzid); // usually works + + if (itz == nullptr) // fallback + itz = icaltimezone_get_builtin_timezone(in.tzid); + + if (itz == nullptr) // ok, I give up... make a round trip on the bus to ask EDS to look it up in VTIMEZONES + e_cal_client_get_timezone_sync(client, in.tzid, &itz, cancellable.get(), nullptr); + + if (itz != nullptr) tzid = icaltimezone_get_location(itz); - } gtz = g_time_zone_new(tzid); g_debug("%s eccdt.tzid -> offset is %d", G_STRLOC, in.tzid, (int)g_time_zone_get_offset(gtz,0)); -- cgit v1.2.3