From 3fec7061c55217868ae92543e854f7d95656e48f Mon Sep 17 00:00:00 2001 From: eafton Date: Tue, 30 Sep 2025 20:46:44 +0300 Subject: [PATCH 1/6] Implement TimeToDateTime for Symbian --- src/time/ngage/SDL_systime.cpp | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/src/time/ngage/SDL_systime.cpp b/src/time/ngage/SDL_systime.cpp index 44bcd23e8bdd3..ce23a8f9e4470 100644 --- a/src/time/ngage/SDL_systime.cpp +++ b/src/time/ngage/SDL_systime.cpp @@ -171,20 +171,31 @@ bool SDL_GetCurrentTime(SDL_Time *ticks) bool SDL_TimeToDateTime(SDL_Time ticks, SDL_DateTime *dt, bool localTime) { + TTime time; + TTime universal_time; + TTimeIntervalMicroSeconds offset; + TDateTime date_time; + TDateTime universal_date_time; + CHECK_PARAM(!dt) { return SDL_InvalidParamError("dt"); } - // FIXME: Need implementation - dt->year = 1970; - dt->month = 1; - dt->day = 1; - dt->hour = 0; - dt->minute = 0; - dt->second = 0; - dt->nanosecond = 0; - dt->day_of_week = 4; - dt->utc_offset = 0; + time = UnixEpoch(); + offset = TTimeIntervalMicroSeconds(ticks / 1000); + time += offset; + date_time = time.DateTime(); + universal_time.UniversalTime(); + universal_date_time = universal_time.DateTime(); + dt->year = date_time.Year(); + dt->month = date_time.Month() + 1; + dt->day = date_time.Day() + 1; + dt->hour = date_time.Hour(); + dt->minute = date_time.Minute(); + dt->second = date_time.Second(); + dt->nanosecond = date_time.MicroSecond() * 1000; + dt->day_of_week = time.DayNoInWeek() + 1; + dt->utc_offset = universal_date_time.Second() - date_time.Second(); return true; } From fc771211fdc6a3812d76669fc2e08530317c67f8 Mon Sep 17 00:00:00 2001 From: eafton Date: Tue, 30 Sep 2025 20:57:45 +0300 Subject: [PATCH 2/6] Fix SDL_systime.cpp --- src/time/ngage/SDL_systime.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/time/ngage/SDL_systime.cpp b/src/time/ngage/SDL_systime.cpp index ce23a8f9e4470..98e81f2d1a446 100644 --- a/src/time/ngage/SDL_systime.cpp +++ b/src/time/ngage/SDL_systime.cpp @@ -171,7 +171,7 @@ bool SDL_GetCurrentTime(SDL_Time *ticks) bool SDL_TimeToDateTime(SDL_Time ticks, SDL_DateTime *dt, bool localTime) { - TTime time; + TTime ticks_time; TTime universal_time; TTimeIntervalMicroSeconds offset; TDateTime date_time; @@ -181,10 +181,10 @@ bool SDL_TimeToDateTime(SDL_Time ticks, SDL_DateTime *dt, bool localTime) return SDL_InvalidParamError("dt"); } - time = UnixEpoch(); + ticks_time = UnixEpoch(); offset = TTimeIntervalMicroSeconds(ticks / 1000); - time += offset; - date_time = time.DateTime(); + ticks_time += offset; + date_time = ticks_time.DateTime(); universal_time.UniversalTime(); universal_date_time = universal_time.DateTime(); dt->year = date_time.Year(); @@ -194,7 +194,7 @@ bool SDL_TimeToDateTime(SDL_Time ticks, SDL_DateTime *dt, bool localTime) dt->minute = date_time.Minute(); dt->second = date_time.Second(); dt->nanosecond = date_time.MicroSecond() * 1000; - dt->day_of_week = time.DayNoInWeek() + 1; + dt->day_of_week = ticks_time.DayNoInWeek() + 1; dt->utc_offset = universal_date_time.Second() - date_time.Second(); return true; From 5e4910420630b9c4aabc2fcd3053c64f777a1c27 Mon Sep 17 00:00:00 2001 From: eafton Date: Tue, 30 Sep 2025 21:05:12 +0300 Subject: [PATCH 3/6] Fix SDL_systime.cpp --- src/time/ngage/SDL_systime.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/time/ngage/SDL_systime.cpp b/src/time/ngage/SDL_systime.cpp index 98e81f2d1a446..4b2d809e2ade6 100644 --- a/src/time/ngage/SDL_systime.cpp +++ b/src/time/ngage/SDL_systime.cpp @@ -182,7 +182,7 @@ bool SDL_TimeToDateTime(SDL_Time ticks, SDL_DateTime *dt, bool localTime) } ticks_time = UnixEpoch(); - offset = TTimeIntervalMicroSeconds(ticks / 1000); + offset = TTimeIntervalMicroSeconds(TInt64::TInt64(ticks / 1000)); ticks_time += offset; date_time = ticks_time.DateTime(); universal_time.UniversalTime(); From bff4d3092c6f31e49dc1a43cb7c2c8c4cf5c194b Mon Sep 17 00:00:00 2001 From: eafton Date: Tue, 30 Sep 2025 21:12:57 +0300 Subject: [PATCH 4/6] Fix SDL_systime.cpp --- src/time/ngage/SDL_systime.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/time/ngage/SDL_systime.cpp b/src/time/ngage/SDL_systime.cpp index 4b2d809e2ade6..ead35d90fd469 100644 --- a/src/time/ngage/SDL_systime.cpp +++ b/src/time/ngage/SDL_systime.cpp @@ -176,13 +176,15 @@ bool SDL_TimeToDateTime(SDL_Time ticks, SDL_DateTime *dt, bool localTime) TTimeIntervalMicroSeconds offset; TDateTime date_time; TDateTime universal_date_time; + TInt64 ticks_div; CHECK_PARAM(!dt) { return SDL_InvalidParamError("dt"); } ticks_time = UnixEpoch(); - offset = TTimeIntervalMicroSeconds(TInt64::TInt64(ticks / 1000)); + ticks_div = ticks / 1000; + offset = TTimeIntervalMicroSeconds(ticks_div); ticks_time += offset; date_time = ticks_time.DateTime(); universal_time.UniversalTime(); From 2beb3aaed96d01f5088e0653de210d6fe5bc4c2f Mon Sep 17 00:00:00 2001 From: eafton Date: Wed, 1 Oct 2025 00:54:08 +0300 Subject: [PATCH 5/6] Fix SDL_systime.cpp [sdl-ci-filter ngage] --- src/time/ngage/SDL_systime.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/time/ngage/SDL_systime.cpp b/src/time/ngage/SDL_systime.cpp index ead35d90fd469..29072c5ce9d02 100644 --- a/src/time/ngage/SDL_systime.cpp +++ b/src/time/ngage/SDL_systime.cpp @@ -177,13 +177,15 @@ bool SDL_TimeToDateTime(SDL_Time ticks, SDL_DateTime *dt, bool localTime) TDateTime date_time; TDateTime universal_date_time; TInt64 ticks_div; + TInt64 ticks_div_r; CHECK_PARAM(!dt) { return SDL_InvalidParamError("dt"); } ticks_time = UnixEpoch(); - ticks_div = ticks / 1000; + ticks_div = TInt64((TUint)(ticks >> 32), (TUint)ticks); + ticks_div.DivMod(1000, &ticks_div_r); offset = TTimeIntervalMicroSeconds(ticks_div); ticks_time += offset; date_time = ticks_time.DateTime(); From 5f4d4577502a8f7720aedf3d4c473e754930b6bd Mon Sep 17 00:00:00 2001 From: eafton Date: Wed, 1 Oct 2025 01:06:57 +0300 Subject: [PATCH 6/6] Fix SDL_systime.cpp --- src/time/ngage/SDL_systime.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/time/ngage/SDL_systime.cpp b/src/time/ngage/SDL_systime.cpp index 29072c5ce9d02..03891b6f57533 100644 --- a/src/time/ngage/SDL_systime.cpp +++ b/src/time/ngage/SDL_systime.cpp @@ -177,7 +177,9 @@ bool SDL_TimeToDateTime(SDL_Time ticks, SDL_DateTime *dt, bool localTime) TDateTime date_time; TDateTime universal_date_time; TInt64 ticks_div; + TInt64 ticks_div_d_64; TInt64 ticks_div_r; + SDL_Time ticks_div_d; CHECK_PARAM(!dt) { return SDL_InvalidParamError("dt"); @@ -185,7 +187,9 @@ bool SDL_TimeToDateTime(SDL_Time ticks, SDL_DateTime *dt, bool localTime) ticks_time = UnixEpoch(); ticks_div = TInt64((TUint)(ticks >> 32), (TUint)ticks); - ticks_div.DivMod(1000, &ticks_div_r); + ticks_div_d = 1000; + ticks_div_d_64 = TInt64((TUint)(ticks_div_d >> 32), (TUint)ticks_div_d); + ticks_div.DivMod(ticks_div_d_64, ticks_div_r); offset = TTimeIntervalMicroSeconds(ticks_div); ticks_time += offset; date_time = ticks_time.DateTime();