Changeset - r5581:ba5d5198a4ab
[Not reviewed]
master
0 4 0
rubidium - 17 years ago 2007-01-10 15:00:20
rubidium@openttd.org
(svn r8028) -Fix: overflow of ticks was not handled properly, possibly resulting a non-reacting gameserver/gameclient.
4 files changed with 21 insertions and 27 deletions:
0 comments (0 inline, 0 general)
src/video/cocoa_v.m
Show inline comments
 
@@ -652,8 +652,8 @@ static bool QZ_PollEvent(void)
 

	
 
static void QZ_GameLoop(void)
 
{
 
	uint32 next_tick = GetTick() + 30;
 
	uint32 cur_ticks;
 
	uint32 cur_ticks = GetTick();
 
	uint32 next_tick = cur_ticks + 30;
 
	uint32 pal_tick = 0;
 
#ifdef _DEBUG
 
	uint32 et0, et, st0, st;
 
@@ -680,6 +680,7 @@ static void QZ_GameLoop(void)
 
	CSleep(1);
 

	
 
	for (;;) {
 
		uint32 prev_cur_ticks; // to check for wrapping
 
		InteractiveRandom(); // randomness
 

	
 
		while (QZ_PollEvent()) {}
 
@@ -698,11 +699,8 @@ static void QZ_GameLoop(void)
 
		}
 

	
 
		cur_ticks = GetTick();
 
		if ((_fast_forward && !_pause) || cur_ticks > next_tick)
 
			next_tick = cur_ticks;
 

	
 
		if (cur_ticks == next_tick) {
 
			next_tick += 30;
 
		if (cur_ticks >= next_tick || (_fast_forward && !_pause) || cur_ticks < prev_cur_ticks) {
 
			next_tick = cur_ticks + 30;
 

	
 
			_ctrl_pressed = !!(_cocoa_video_data.current_mods & NSControlKeyMask);
 
			_shift_pressed = !!(_cocoa_video_data.current_mods & NSShiftKeyMask);
src/video/dedicated_v.c
Show inline comments
 
@@ -223,10 +223,8 @@ static void DedicatedHandleKeyInput(void
 

	
 
static void DedicatedVideoMainLoop(void)
 
{
 
	uint32 next_tick;
 
	uint32 cur_ticks;
 

	
 
	next_tick = GetTime() + 30;
 
	uint32 cur_ticks = GetTime();
 
	uint32 next_tick = cur_ticks + 30;
 

	
 
	/* Signal handlers */
 
#ifdef UNIX
 
@@ -268,15 +266,15 @@ static void DedicatedVideoMainLoop(void)
 
	}
 

	
 
	while (!_exit_game) {
 
		uint32 prev_cur_ticks = cur_ticks; // to check for wrapping
 
		InteractiveRandom(); // randomness
 

	
 
		if (!_dedicated_forks)
 
			DedicatedHandleKeyInput();
 

	
 
		cur_ticks = GetTime();
 

	
 
		if (cur_ticks >= next_tick) {
 
			next_tick += 30;
 
		if (cur_ticks >= next_tick || cur_ticks < prev_cur_ticks) {
 
			next_tick = cur_ticks + 30;
 

	
 
			GameLoop();
 
			_screen.dst_ptr = _dedicated_video_mem;
src/video/sdl_v.c
Show inline comments
 
@@ -422,14 +422,15 @@ static void SdlVideoStop(void)
 

	
 
static void SdlVideoMainLoop(void)
 
{
 
	uint32 next_tick = SDL_CALL SDL_GetTicks() + 30;
 
	uint32 cur_ticks;
 
	uint32 cur_ticks = SDL_CALL SDL_GetTicks();
 
	uint32 next_tick = cur_ticks + 30;
 
	uint32 pal_tick = 0;
 
	uint32 mod;
 
	int numkeys;
 
	Uint8 *keys;
 

	
 
	for (;;) {
 
		uint32 prev_cur_ticks = cur_ticks; // to check for wrapping
 
		InteractiveRandom(); // randomness
 

	
 
		while (PollEvent() == -1) {}
 
@@ -451,11 +452,8 @@ static void SdlVideoMainLoop(void)
 
		}
 

	
 
		cur_ticks = SDL_CALL SDL_GetTicks();
 
		if ((_fast_forward && !_pause) || cur_ticks > next_tick)
 
			next_tick = cur_ticks;
 

	
 
		if (cur_ticks == next_tick) {
 
			next_tick += 30;
 
		if (cur_ticks >= next_tick || (_fast_forward && !_pause) || cur_ticks < prev_cur_ticks) {
 
			next_tick = cur_ticks + 30;
 

	
 
			_ctrl_pressed  = !!(mod & KMOD_CTRL);
 
			_shift_pressed = !!(mod & KMOD_SHIFT);
src/video/win32_v.c
Show inline comments
 
@@ -786,11 +786,14 @@ static void CheckPaletteAnim(void)
 
static void Win32GdiMainLoop(void)
 
{
 
	MSG mesg;
 
	uint32 next_tick = GetTickCount() + 30, cur_ticks;
 
	uint32 cur_ticks = GetTickCount();
 
	uint32 next_tick = cur_ticks + 30;
 

	
 
	_wnd.running = true;
 

	
 
	for (;;) {
 
		uint32 prev_cur_ticks = cur_ticks; // to check for wrapping
 

	
 
		while (PeekMessage(&mesg, NULL, 0, 0, PM_REMOVE)) {
 
			InteractiveRandom(); // randomness
 
			DispatchMessage(&mesg);
 
@@ -810,11 +813,8 @@ static void Win32GdiMainLoop(void)
 
		}
 

	
 
		cur_ticks = GetTickCount();
 
		if ((_fast_forward && !_pause) || cur_ticks > next_tick)
 
			next_tick = cur_ticks;
 

	
 
		if (cur_ticks == next_tick) {
 
			next_tick += 30;
 
		if (cur_ticks >= next_tick || (_fast_forward && !_pause) || cur_ticks < prev_cur_ticks) {
 
			next_tick = cur_ticks + 30;
 
			_ctrl_pressed = _wnd.has_focus && GetAsyncKeyState(VK_CONTROL)<0;
 
			_shift_pressed = _wnd.has_focus && GetAsyncKeyState(VK_SHIFT)<0;
 
#ifdef _DEBUG
0 comments (0 inline, 0 general)