X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a452689b23cf8366caba853ce26b7ad5a4fc269e..a7d5151df02bf70a9f6ff1c5c7fd33ab07bf409c:/src/common/datetime.cpp?ds=sidebyside diff --git a/src/common/datetime.cpp b/src/common/datetime.cpp index 8448eb1a5e..c797fc0144 100644 --- a/src/common/datetime.cpp +++ b/src/common/datetime.cpp @@ -169,6 +169,36 @@ wxCUSTOM_TYPE_INFO(wxDateTime, wxToStringConverter , wxFromStringCon #endif #endif // !WX_TIMEZONE && !WX_GMTOFF_IN_TM +#if (!defined(HAVE_LOCALTIME_R) || !defined(HAVE_GMTIME_R)) && wxUSE_THREADS && !defined(__WINDOWS__) +static wxMutex timeLock; +#endif + +#ifndef HAVE_LOCALTIME_R +struct tm *wxLocaltime_r(const time_t* ticks, struct tm* temp) +{ +#if wxUSE_THREADS && !defined(__WINDOWS__) + // No need to waste time with a mutex on windows since it's using + // thread local storage for localtime anyway. + wxMutexLocker locker(timeLock); +#endif + memcpy(temp, localtime(ticks), sizeof(struct tm)); + return temp; +} +#endif + +#ifndef HAVE_GMTIME_R +struct tm *wxGmtime_r(const time_t* ticks, struct tm* temp) +{ +#if wxUSE_THREADS && !defined(__WINDOWS__) + // No need to waste time with a mutex on windows since it's + // using thread local storage for gmtime anyway. + wxMutexLocker locker(timeLock); +#endif + memcpy(temp, gmtime(ticks), sizeof(struct tm)); + return temp; +} +#endif + // ---------------------------------------------------------------------------- // macros // ----------------------------------------------------------------------------