diff options
| author | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2020-02-27 06:57:39 +0000 |
|---|---|---|
| committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2020-02-27 06:57:39 +0000 |
| commit | bf24c2ce5160fc7a04d44dac8cd564c2d9ea62e5 (patch) | |
| tree | ce22f5e0e217c88386c4ea958aeb3a4aead55d6a | |
| parent | 021f4f74994635d7739d637f206aca1949eadc0a (diff) | |
| parent | 50f60827277b9a2faefb290d357712f3723a814c (diff) | |
| download | platform_external_dng_sdk-bf24c2ce5160fc7a04d44dac8cd564c2d9ea62e5.tar.gz platform_external_dng_sdk-bf24c2ce5160fc7a04d44dac8cd564c2d9ea62e5.tar.bz2 platform_external_dng_sdk-bf24c2ce5160fc7a04d44dac8cd564c2d9ea62e5.zip | |
Remove deprecated mac API from dng_date_time.cpp am: 50f6082727android-r-preview-4android-r-preview-3android-r-preview-2
Change-Id: Ia8904c6febabb29b15701c48a89040ab51da0057
| -rw-r--r-- | source/dng_date_time.cpp | 54 | ||||
| -rw-r--r-- | source/dng_utils.h | 40 |
2 files changed, 73 insertions, 21 deletions
diff --git a/source/dng_date_time.cpp b/source/dng_date_time.cpp index bede131..b143181 100644 --- a/source/dng_date_time.cpp +++ b/source/dng_date_time.cpp @@ -806,32 +806,44 @@ dng_time_zone LocalTimeZone (const dng_date_time &dt) #if qMacOS CFTimeZoneRef zoneRef = CFTimeZoneCopyDefault (); - + + CFReleaseHelper<CFTimeZoneRef> zoneRefDeleter (zoneRef); + if (zoneRef) { - - CFGregorianDate gregDate; - gregDate.year = dt.fYear; - gregDate.month = (SInt8) dt.fMonth; - gregDate.day = (SInt8) dt.fDay; - gregDate.hour = (SInt8) dt.fHour; - gregDate.minute = (SInt8) dt.fMinute; - gregDate.second = (SInt8) dt.fSecond; - - CFAbsoluteTime absTime = CFGregorianDateGetAbsoluteTime (gregDate, zoneRef); - - CFTimeInterval secondsDelta = CFTimeZoneGetSecondsFromGMT (zoneRef, absTime); - - CFRelease (zoneRef); - - result.SetOffsetSeconds (Round_int32 (secondsDelta)); - - if (result.IsValid ()) + // New path that doesn't use deprecated CFGregorian-based APIs. + + CFCalendarRef calendar = + CFCalendarCreateWithIdentifier (kCFAllocatorDefault, + kCFGregorianCalendar); + + CFReleaseHelper<CFCalendarRef> calendarDeleter (calendar); + + CFAbsoluteTime absTime; + + if (CFCalendarComposeAbsoluteTime (calendar, + &absTime, + "yMdHms", + dt.fYear, + dt.fMonth, + dt.fDay, + dt.fHour, + dt.fMinute, + dt.fSecond)) { - return result; + + CFTimeInterval secondsDelta = CFTimeZoneGetSecondsFromGMT (zoneRef, absTime); + + result.SetOffsetSeconds (Round_int32 (secondsDelta)); + + if (result.IsValid ()) + { + return result; + } + } - + } #endif diff --git a/source/dng_utils.h b/source/dng_utils.h index 691f0b9..db38599 100644 --- a/source/dng_utils.h +++ b/source/dng_utils.h @@ -1259,6 +1259,46 @@ void LimitFloatBitDepth (dng_host &host, /*****************************************************************************/ +#if qMacOS + +/*****************************************************************************/ + +template<typename T> +class CFReleaseHelper + { + + private: + + T fRef; + + public: + + CFReleaseHelper (T ref) + : fRef (ref) + { + } + + ~CFReleaseHelper () + { + if (fRef) + { + CFRelease (fRef); + } + } + + T Get () const + { + return fRef; + } + + }; + +/*****************************************************************************/ + +#endif // qMacOS + +/*****************************************************************************/ + #endif /*****************************************************************************/ |
