Accepting request 958516 from games
- Add 0001-Fix-integer-overflow-during-multiplication-with-real.patch to resolve jaggy motion when gamespeed!=100 and when the program has run for 25+ minutes. OBS-URL: https://build.opensuse.org/request/show/958516 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/prboom-plus?expand=0&rev=18
This commit is contained in:
commit
da8d1137f5
@ -0,0 +1,61 @@
|
|||||||
|
From 247c27d7dfe44712975c75a9d741b69cca36d895 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jan Engelhardt <jengelh@inai.de>
|
||||||
|
Date: Tue, 15 Feb 2022 20:28:48 +0100
|
||||||
|
Subject: [PATCH] Fix integer overflow during multiplication with
|
||||||
|
realtic_clock_rate (#476)
|
||||||
|
|
||||||
|
When the program has run for about 26 minutes and SDL_GetTicks has
|
||||||
|
accrued a reasonably large value, multiplication by realtic_clock_rate
|
||||||
|
overflows "int" on contemporary platforms, manifesting in jagged
|
||||||
|
motion.
|
||||||
|
|
||||||
|
Fixes: v2.6.1um-29-ga7bafe07
|
||||||
|
Closes #471
|
||||||
|
---
|
||||||
|
prboom2/src/SDL/i_main.c | 12 ++++++------
|
||||||
|
1 file changed, 6 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/prboom2/src/SDL/i_main.c b/prboom2/src/SDL/i_main.c
|
||||||
|
index c0fc0288..a29ccda7 100644
|
||||||
|
--- prboom2/src/SDL/i_main.c
|
||||||
|
+++ prboom2/src/SDL/i_main.c
|
||||||
|
@@ -100,8 +100,8 @@ int ms_to_next_tick;
|
||||||
|
|
||||||
|
int I_GetTime_RealTime (void)
|
||||||
|
{
|
||||||
|
- int t = I_GetTime_MS();
|
||||||
|
- int i = t * TICRATE / 1000;
|
||||||
|
+ int64_t t = I_GetTime_MS();
|
||||||
|
+ int64_t i = t * TICRATE / 1000;
|
||||||
|
|
||||||
|
ms_to_next_tick = (i + 1) * 1000 / TICRATE - t;
|
||||||
|
ms_to_next_tick = BETWEEN(0, 1000 / TICRATE, ms_to_next_tick);
|
||||||
|
@@ -113,8 +113,8 @@ int realtic_clock_rate = 100;
|
||||||
|
|
||||||
|
static int I_GetTime_Scaled(void)
|
||||||
|
{
|
||||||
|
- int t = I_GetTime_MS();
|
||||||
|
- int i = t * TICRATE * realtic_clock_rate / 100000;
|
||||||
|
+ int64_t t = I_GetTime_MS();
|
||||||
|
+ int64_t i = t * TICRATE * realtic_clock_rate / 100000;
|
||||||
|
|
||||||
|
ms_to_next_tick = (i + 1) * 100000 / realtic_clock_rate / TICRATE - t;
|
||||||
|
ms_to_next_tick = BETWEEN(0, 100000 / realtic_clock_rate / TICRATE, ms_to_next_tick);
|
||||||
|
@@ -147,12 +147,12 @@ static int I_TickElapsedTime_FastDemo(void)
|
||||||
|
|
||||||
|
static int I_TickElapsedTime_RealTime(void)
|
||||||
|
{
|
||||||
|
- return I_GetTime_MS() * TICRATE % 1000 * FRACUNIT / 1000;
|
||||||
|
+ return (int64_t)I_GetTime_MS() * TICRATE % 1000 * FRACUNIT / 1000;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int I_TickElapsedTime_Scaled(void)
|
||||||
|
{
|
||||||
|
- return I_GetTime_MS() * realtic_clock_rate * TICRATE / 100 % 1000 * FRACUNIT / 1000;
|
||||||
|
+ return (int64_t)I_GetTime_MS() * realtic_clock_rate * TICRATE / 100 % 1000 * FRACUNIT / 1000;
|
||||||
|
}
|
||||||
|
|
||||||
|
int (*I_TickElapsedTime)(void) = I_TickElapsedTime_RealTime;
|
||||||
|
--
|
||||||
|
2.35.1
|
||||||
|
|
@ -1,3 +1,10 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Mar 2 12:24:56 UTC 2022 - Jan Engelhardt <jengelh@inai.de>
|
||||||
|
|
||||||
|
- Add 0001-Fix-integer-overflow-during-multiplication-with-real.patch
|
||||||
|
to resolve jaggy motion when gamespeed!=100 and when the
|
||||||
|
program has run for 25+ minutes.
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Sat Feb 19 16:19:14 UTC 2022 - Jan Engelhardt <jengelh@inai.de>
|
Sat Feb 19 16:19:14 UTC 2022 - Jan Engelhardt <jengelh@inai.de>
|
||||||
|
|
||||||
|
@ -27,6 +27,7 @@ URL: http://prboom-plus.sf.net/
|
|||||||
#Git-Clone: https://github.com/coelckers/prboom-plus
|
#Git-Clone: https://github.com/coelckers/prboom-plus
|
||||||
Source: https://github.com/coelckers/prboom-plus/archive/refs/tags/v%version.tar.gz
|
Source: https://github.com/coelckers/prboom-plus/archive/refs/tags/v%version.tar.gz
|
||||||
Patch1: prboom-nodatetime.diff
|
Patch1: prboom-nodatetime.diff
|
||||||
|
Patch2: 0001-Fix-integer-overflow-during-multiplication-with-real.patch
|
||||||
Patch3: prboom-hbar-all.diff
|
Patch3: prboom-hbar-all.diff
|
||||||
Patch4: prboom-hbar-gradient.diff
|
Patch4: prboom-hbar-gradient.diff
|
||||||
BuildRequires: Mesa-devel
|
BuildRequires: Mesa-devel
|
||||||
|
Loading…
Reference in New Issue
Block a user