mirror of
https://github.com/kichikuou/xsystem35-sdl2.git
synced 2026-10-04 04:38:03 +03:00
Compare commits
1
Commits
sdl3
...
effect-flicker
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
23667b3e39 |
@@ -191,6 +191,7 @@ static void eff_init(struct effect *eff, SDL_Rect *rect, EffectTexture *old, Eff
|
||||
|
||||
if (!eff->is_fullscreen)
|
||||
gfx_updateScreen(); // Flush pending display changes.
|
||||
gfx_setEffectRunning(true);
|
||||
}
|
||||
|
||||
static void eff_finish(struct effect *eff, bool present) {
|
||||
@@ -1912,4 +1913,5 @@ void effect_step(struct effect *eff, float progress) {
|
||||
|
||||
void effect_finish(struct effect *eff) {
|
||||
eff->finish(eff);
|
||||
gfx_setEffectRunning(false);
|
||||
}
|
||||
|
||||
+8
-1
@@ -45,6 +45,7 @@
|
||||
#include "debugger.h"
|
||||
|
||||
static bool gfx_dirty;
|
||||
static bool gfx_effect_running;
|
||||
|
||||
static void gfx_pal_check(void) {
|
||||
if (nact->ags.pal_changed) {
|
||||
@@ -64,7 +65,7 @@ SDL_Color gfx_getPaletteColor(uint8_t color) {
|
||||
}
|
||||
|
||||
void gfx_updateScreen(void) {
|
||||
if (!gfx_dirty)
|
||||
if (!gfx_dirty || gfx_effect_running)
|
||||
return;
|
||||
SDL_RenderClear(gfx_renderer);
|
||||
SDL_RenderCopy(gfx_renderer, gfx_texture, NULL, NULL);
|
||||
@@ -73,6 +74,12 @@ void gfx_updateScreen(void) {
|
||||
gfx_dirty = false;
|
||||
}
|
||||
|
||||
void gfx_setEffectRunning(bool running) {
|
||||
gfx_effect_running = running;
|
||||
// Effects present directly. Do not replay pending redraws over their frames.
|
||||
gfx_dirty = false;
|
||||
}
|
||||
|
||||
void gfx_requestRedraw(void) {
|
||||
gfx_dirty = true;
|
||||
}
|
||||
|
||||
@@ -37,6 +37,8 @@ extern surface_t *gfx_dibinfo;
|
||||
extern int view_w;
|
||||
extern int view_h;
|
||||
|
||||
void gfx_setEffectRunning(bool running);
|
||||
|
||||
SDL_Surface *gfx_dib_to_surface_with_alpha(int x, int y, int w, int h);
|
||||
SDL_Surface *gfx_dib_to_surface_colorkey(int x, int y, int w, int h, int col);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user