From f93f9d984a64730761c139db2811c08073260973 Mon Sep 17 00:00:00 2001 From: Anders Jenbo Date: Sat, 2 Mar 2019 18:01:44 +0100 Subject: [PATCH] Backup and recover game pallet during movie playback --- SourceX/movie.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/SourceX/movie.cpp b/SourceX/movie.cpp index d726a8798..4ddef2035 100644 --- a/SourceX/movie.cpp +++ b/SourceX/movie.cpp @@ -1,6 +1,7 @@ #include "../3rdParty/libsmacker/smacker.h" #include "pch.h" +PALETTEENTRY previousPalette[256]; BYTE movie_playing; BOOL loop_movie; // TODO @@ -64,6 +65,8 @@ void __fastcall play_movie(char *pszMovie, BOOL user_can_close) texture = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_STREAMING, width, height); SDL_RenderSetLogicalSize(renderer, width, height); + memcpy(previousPalette, orig_palette, 1024); + // Copy frame to buffer SDL_Surface *videoSurface = SDL_CreateRGBSurfaceWithFormatFrom( smk_get_video(smacker), @@ -140,6 +143,7 @@ void __fastcall play_movie(char *pszMovie, BOOL user_can_close) if (now < frameEnd) { usleep(frameEnd - now); // wait with next frame if the system is to fast } + frameEnd += usPerFrame; if (smk_next(smacker) == SMK_DONE) { if (loop_movie) @@ -155,6 +159,8 @@ void __fastcall play_movie(char *pszMovie, BOOL user_can_close) } smk_close(smacker); + memcpy(orig_palette, previousPalette, 1024); + SDL_DestroyTexture(texture); texture = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_STREAMING, SCREEN_WIDTH, SCREEN_HEIGHT); SDL_RenderSetLogicalSize(renderer, SCREEN_WIDTH, SCREEN_HEIGHT);