summaryrefslogtreecommitdiff
path: root/src/video
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2011-12-08 19:37:33 +0000
committerrubidium <rubidium@openttd.org>2011-12-08 19:37:33 +0000
commit61625e53c96572528745b79a63ba614b74c8f301 (patch)
treef748a6f1eb557f7466346597b167607d1ae75413 /src/video
parent8630e97b4f0d078ca492944f383790979b85f8c1 (diff)
downloadopenttd-61625e53c96572528745b79a63ba614b74c8f301.tar.xz
(svn r23448) -Fix: keep a local copy of the palette in the 32bpp animated blitter so changes of the palette data during the game don't influence drawing (with SDL)
Diffstat (limited to 'src/video')
-rw-r--r--src/video/allegro_v.cpp10
-rw-r--r--src/video/cocoa/event.mm8
-rw-r--r--src/video/sdl_v.cpp10
-rw-r--r--src/video/win32_v.cpp3
4 files changed, 12 insertions, 19 deletions
diff --git a/src/video/allegro_v.cpp b/src/video/allegro_v.cpp
index 7f8b4304c..a8d45b739 100644
--- a/src/video/allegro_v.cpp
+++ b/src/video/allegro_v.cpp
@@ -100,7 +100,7 @@ static void CheckPaletteAnim()
break;
case Blitter::PALETTE_ANIMATION_BLITTER:
- blitter->PaletteAnimate(_cur_palette.first_dirty, _cur_palette.count_dirty);
+ blitter->PaletteAnimate(_cur_palette);
break;
case Blitter::PALETTE_ANIMATION_NONE:
@@ -487,7 +487,8 @@ void VideoDriver_Allegro::MainLoop()
uint32 cur_ticks = GetTime();
uint32 last_cur_ticks = cur_ticks;
uint32 next_tick = cur_ticks + MILLISECONDS_PER_TICK;
- uint32 pal_tick = 0;
+
+ CheckPaletteAnim();
for (;;) {
uint32 prev_cur_ticks = cur_ticks; // to check for wrapping
@@ -532,10 +533,7 @@ void VideoDriver_Allegro::MainLoop()
GameLoop();
UpdateWindows();
- if (++pal_tick > 4) {
- CheckPaletteAnim();
- pal_tick = 1;
- }
+ CheckPaletteAnim();
DrawSurfaceToScreen();
} else {
CSleep(1);
diff --git a/src/video/cocoa/event.mm b/src/video/cocoa/event.mm
index 3a9a62595..e9753fdc7 100644
--- a/src/video/cocoa/event.mm
+++ b/src/video/cocoa/event.mm
@@ -99,7 +99,7 @@ static void QZ_CheckPaletteAnim()
break;
case Blitter::PALETTE_ANIMATION_BLITTER:
- blitter->PaletteAnimate(_cur_palette.first_dirty, _cur_palette.count_dirty);
+ blitter->PaletteAnimate(_cur_palette);
break;
case Blitter::PALETTE_ANIMATION_NONE:
@@ -555,7 +555,6 @@ void QZ_GameLoop()
uint32 cur_ticks = GetTick();
uint32 last_cur_ticks = cur_ticks;
uint32 next_tick = cur_ticks + MILLISECONDS_PER_TICK;
- uint32 pal_tick = 0;
#ifdef _DEBUG
uint32 et0 = GetTick();
@@ -615,10 +614,7 @@ void QZ_GameLoop()
GameLoop();
UpdateWindows();
- if (++pal_tick > 4) {
- QZ_CheckPaletteAnim();
- pal_tick = 1;
- }
+ QZ_CheckPaletteAnim();
_cocoa_subdriver->Draw();
} else {
#ifdef _DEBUG
diff --git a/src/video/sdl_v.cpp b/src/video/sdl_v.cpp
index 1b579cc51..e56d2730f 100644
--- a/src/video/sdl_v.cpp
+++ b/src/video/sdl_v.cpp
@@ -85,7 +85,7 @@ static void CheckPaletteAnim()
break;
case Blitter::PALETTE_ANIMATION_BLITTER:
- blitter->PaletteAnimate(_cur_palette.first_dirty, _cur_palette.count_dirty);
+ blitter->PaletteAnimate(_cur_palette);
break;
case Blitter::PALETTE_ANIMATION_NONE:
@@ -503,11 +503,12 @@ void VideoDriver_SDL::MainLoop()
uint32 cur_ticks = SDL_CALL SDL_GetTicks();
uint32 last_cur_ticks = cur_ticks;
uint32 next_tick = cur_ticks + MILLISECONDS_PER_TICK;
- uint32 pal_tick = 0;
uint32 mod;
int numkeys;
Uint8 *keys;
+ CheckPaletteAnim();
+
if (_draw_threaded) {
/* Initialise the mutex first, because that's the thing we *need*
* directly in the newly created thread. */
@@ -584,10 +585,7 @@ void VideoDriver_SDL::MainLoop()
if (_draw_threaded) _draw_mutex->BeginCritical();
UpdateWindows();
- if (++pal_tick > 4) {
- CheckPaletteAnim();
- pal_tick = 1;
- }
+ CheckPaletteAnim();
} else {
/* Release the thread while sleeping */
if (_draw_threaded) _draw_mutex->EndCritical();
diff --git a/src/video/win32_v.cpp b/src/video/win32_v.cpp
index 5cd9f64da..93961e476 100644
--- a/src/video/win32_v.cpp
+++ b/src/video/win32_v.cpp
@@ -359,7 +359,7 @@ static LRESULT CALLBACK WndProcGdi(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lP
break;
case Blitter::PALETTE_ANIMATION_BLITTER:
- blitter->PaletteAnimate(_cur_palette.first_dirty, _cur_palette.count_dirty);
+ blitter->PaletteAnimate(_cur_palette);
break;
case Blitter::PALETTE_ANIMATION_NONE:
@@ -853,6 +853,7 @@ void VideoDriver_Win32::MainLoop()
_wnd.running = true;
+ CheckPaletteAnim();
for (;;) {
uint32 prev_cur_ticks = cur_ticks; // to check for wrapping