diff options
-rw-r--r-- | cppuhelper/source/bootstrap.cxx | 4 | ||||
-rw-r--r-- | include/osl/time.h | 45 | ||||
-rw-r--r-- | include/salhelper/timer.hxx | 6 |
3 files changed, 45 insertions, 10 deletions
diff --git a/cppuhelper/source/bootstrap.cxx b/cppuhelper/source/bootstrap.cxx index 34dd060febfc..8d381c091337 100644 --- a/cppuhelper/source/bootstrap.cxx +++ b/cppuhelper/source/bootstrap.cxx @@ -19,6 +19,7 @@ #include <sal/config.h> +#include <chrono> #include <cstring> #include <rtl/process.h> @@ -211,8 +212,7 @@ Reference< XComponentContext > SAL_CALL bootstrap() catch ( connection::NoConnectException & ) { // wait 500 ms, then try to connect again - TimeValue tv = { 0 /* secs */, 500000000 /* nanosecs */ }; - ::osl::Thread::wait( tv ); + ::osl::Thread::wait( std::chrono::milliseconds(500) ); } } } diff --git a/include/osl/time.h b/include/osl/time.h index 335f552e7467..44f9af817759 100644 --- a/include/osl/time.h +++ b/include/osl/time.h @@ -22,13 +22,13 @@ #include <sal/config.h> +#if defined LIBO_INTERNAL_ONLY && defined __cplusplus +#include <chrono> +#endif + #include <sal/saldllapi.h> #include <sal/types.h> -#ifdef __cplusplus -extern "C" { -#endif - /****************************************************************************/ /* TimeValue */ /****************************************************************************/ @@ -39,15 +39,52 @@ extern "C" { /* Time since Jan-01-1970 */ +#if defined LIBO_INTERNAL_ONLY && defined __cplusplus + +struct TimeValue { + TimeValue() = default; + + SAL_CONSTEXPR TimeValue(sal_uInt32 seconds, sal_uInt32 nanoseconds): + Seconds(seconds), Nanosec(nanoseconds) {} + + template<typename Rep, typename Period> SAL_CONSTEXPR + TimeValue(std::chrono::duration<Rep, Period> const & duration): + Seconds( + std::chrono::duration_cast<std::chrono::nanoseconds>( + duration).count() / 1000000000), + Nanosec( + std::chrono::duration_cast<std::chrono::nanoseconds>( + duration).count() % 1000000000) + {} + + sal_uInt32 Seconds; + sal_uInt32 Nanosec; +}; + +#else + +#ifdef __cplusplus +extern "C" { +#endif + typedef struct { sal_uInt32 Seconds; sal_uInt32 Nanosec; } TimeValue; +#ifdef __cplusplus +} +#endif + +#endif + #if defined(SAL_W32) # pragma pack(pop) #endif +#ifdef __cplusplus +extern "C" { +#endif /****************************************************************************/ /* oslDateTime */ diff --git a/include/salhelper/timer.hxx b/include/salhelper/timer.hxx index ac2a523c4b6a..05b95564e851 100644 --- a/include/salhelper/timer.hxx +++ b/include/salhelper/timer.hxx @@ -56,11 +56,9 @@ struct TTimeValue : public TimeValue normalize(); } - TTimeValue( const TTimeValue& rTimeValue ) + TTimeValue( const TTimeValue& rTimeValue ): + TimeValue(rTimeValue) { - Seconds = rTimeValue.Seconds; - Nanosec = rTimeValue.Nanosec; - normalize(); } |